A B C D E F G H I J1 22 2 7 8 1 22 2 7 81 71 5 53 50 1 71 5 5 50 3 6 2 2 0 4 6 2 21 61 51 3 50 1 61 5 3 20 52 2 2 4 0 6 2 2 41 2 1 51 4 1 41 1 5 40 1 4 2 4 0 40 4 2 40 50 5 2 7 0 50 5 2 7假设我有上面的数据框,我想将列 F 的值更改为 I 到 55,如果列 B == 51 或 52, 50。我想对 C、E 等其他列重复此操作。这是我编写的代码跟随熊猫。df.loc[(df['B'] == 50) | (df['B'] == 51) | df['B'] == 50) | (df['C'] == 51), ['F', 'G', 'H', 'I' ]] = 55它不工作。
1 回答

浮云间
TA贡献1829条经验 获得超4个赞
iiuc 你的意思是这样的:
df.loc[df['B'].isin([50, 51, 52]) | df['C'].isin([50, 51, 52]), ['F', 'G', 'H', 'I']] = 55
编辑:
对于更长的查找列列表,您可以使用
luc = ['B', 'C', 'E', 'F']
df.loc[df[luc].isin([50, 51, 52]).any(axis=1), ['F', 'G', 'H', 'I']] = 55
(感谢@jezrael 指出可直接访问的方法any)
要么
df.loc[np.any(df[luc].isin([50, 51, 52]), axis=1), ['F', 'G', 'H', 'I']] = 55
添加回答
举报
0/150
提交
取消