猿问

根据其他列条件更改多列

A    B  C   D   E   F    G   H  I   J

1   22  2   7   8   1   22  2   7   8

1   71  5   53  50  1   71  5   5   5

0   3   6   2   2   0   4   6   2   2

1   61  51  3   50  1   61  5   3   2

0   52  2   2   4   0   6   2   2   4

1   2   1   51  4   1   41  1   5   4

0   1   4   2   4   0   40  4   2   4

0   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

它不工作。


长风秋雁
浏览 112回答 1
1回答

浮云间

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
随时随地看视频慕课网APP

相关分类

Python
我要回答