为了账号安全,请及时绑定邮箱和手机立即绑定

无需循环替换 Pandas 列中的多个值

无需循环替换 Pandas 列中的多个值

RISEBY 2021-06-04 18:32:44
我有 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}


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号