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
说我有上述数据框 如果列B == 51或52,50,我想将列F的值更改为I至55。我想对其他列(例如C,E)重复此操作。这是我在pandas中编写的代码。
df.loc[(df['B'] == 50) | (df['B'] == 51) | df['B'] == 50) | (df['C'] == 51), ['F', 'G', 'H', 'I' ]] = 55
它不起作用。
答案 0 :(得分:0)
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