Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于其他列条件更改多列_Python_Pandas - Fatal编程技术网

Python 基于其他列条件更改多列

Python 基于其他列条件更改多列,python,pandas,Python,Pandas,假设我有上面的数据帧 如果列B==51或52,50,我想将列F到I的值更改为55。我想对其他专栏,如C,E重复这一点。这是我在pandas中编写的代码 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

假设我有上面的数据帧 如果列B==51或52,50,我想将列F到I的值更改为55。我想对其他专栏,如C,E重复这一点。这是我在pandas中编写的代码

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

它不起作用了。

你是说这样的东西:

df.loc[(df['B'] == 50) | (df['B'] == 51) | df['B'] == 50) | (df['C'] == 51), ['F', 'G', 'H', 'I' ]] = 55
编辑:

对于较长的查找列列表,您可以使用

df.loc[df['B'].isin([50, 51, 52]) | df['C'].isin([50, 51, 52]), ['F', 'G', 'H', 'I']] = 55
(感谢@jezrael指出了直接可访问的方法
any


这可能是因为创建了初始数据帧的视图或副本。因此,您并没有像您所想的那样修改df。我有数百个列要更改。有没有办法这样做df.loc[df['B','C','E','F'].isin([50,51,52]),[F','G','H','I','X','Y','W','Z']=51
。apply(any axis=1)
应该更改为
。any axis=1)
未测试,只有ideaI问了一个错误的问题,我想检查这些列:假设B,C,D。如果列值等于50,51,52….将其更改为55。但是这一个df.loc[df['B',C',E',F'].isin([50,51,52]),['F',G',H',I',X',Y',W',Z']=55更改整个['F',G',H',H',I',X',Y',W',Z']值到55。请精确:假设谈论您的示例时只看B、C和D:如果[50、51、52]中只有一列,您是想更改所有三列的值,还是只想更改找到匹配值的列中的值…?或者什么?
luc = ['B', 'C', 'E', 'F']
df.loc[df[luc].isin([50, 51, 52]).any(axis=1), ['F', 'G', 'H', 'I']] = 55
df.loc[np.any(df[luc].isin([50, 51, 52]), axis=1), ['F', 'G', 'H', 'I']] = 55