我有 Pandas 数据框,想在 df 的特定列上替换很多值。如何在没有循环的情况下实现下面的代码?for i in range(len(data.loc[:, 'CityID'])): if data.loc[:, 'CityID'][i] == 1: data.loc[:, 'CityID'][i] = 1 elif data.loc[:, 'CityID'][i] in (2, 3, 4, 21): data.loc[:, 'CityID'][i] = 2 elif data.loc[:, 'CityID'][i] in (33, 34): data.loc[:, 'CityID'][i] = 4 else: data.loc[:, 'CityID'][i] = 3
2 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
您可以使用字典pd.Series.map:
d = {1: 1, 2: 2, 3: 2, 4: 2, 21: 2, 33: 4, 34: 4}
data['CityID'] = data['CityID'].map(d).fillna(3)如果字典构建感觉费力,可以使用拆包:
d = {1: 1, **dict.fromkeys((2, 3, 4, 21), 2), **dict.fromkeys((33, 34), 4}添加回答
举报
0/150
提交
取消
