Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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,我有一个数据框,它有两列: A B 0 0 0 1 0 0 0 0 0 0 0 1 我想有一些代码来检查B列,当找到a 1时,该索引中a列的值会像这样更改为1 A B 0 0 1 1 1 0 1 0 1 0 1 1 我的代码是这样的,但它不是我想要的: df['A']= np.where(df['B'] == 1,df['A'], '1') 你可以做: df.loc[df['B'].idxmax():,

我有一个数据框,它有两列:

A    B

0    0
0    1
0    0
0    0 
0    0
0    1
我想有一些代码来检查B列,当找到a 1时,该索引中a列的值会像这样更改为1

A    B
0    0
1    1
1    0
1    0
1    0
1    1
我的代码是这样的,但它不是我想要的:

df['A']= np.where(df['B'] == 1,df['A'], '1')
你可以做:

df.loc[df['B'].idxmax():, 'A'] = 1
print(df)
输出

   A  B
0  0  0
1  1  1
2  1  0
3  1  0
4  1  0
5  1  1
如果要使用np.where,请执行以下操作:

df['A'] = np.where(df.index < df['B'].idxmax(), df['A'], 1)
print(df)

让我们试试
cummax

df['A']=df.B.cummax()
df
Out[302]: 
   A  B
0  0  0
1  1  1
2  1  0
3  1  0
4  1  0
5  1  1
df['A']=df.B.cummax()
df
Out[302]: 
   A  B
0  0  0
1  1  1
2  1  0
3  1  0
4  1  0
5  1  1