我有 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
提交
取消