如何通过索引更改基于另一列的一列值

Nim*_*ima 3 python pandas

我有一个包含两列的数据框:

A    B

0    0
0    1
0    0
0    0 
0    0
0    1
Run Code Online (Sandbox Code Playgroud)

我想要一些代码来检查 B 列,当找到 1 时,该 INDEX 中的 A 列的值会像这样更改为 1;

A    B
0    0
1    1
1    0
1    0
1    0
1    1
Run Code Online (Sandbox Code Playgroud)

我的代码是这样的,但这不是我想要的:

df['A']= np.where(df['B'] == 1,df['A'], '1')
Run Code Online (Sandbox Code Playgroud)

Dan*_*ejo 5

你可以这样做:

df.loc[df['B'].idxmax():, 'A'] = 1
print(df)
Run Code Online (Sandbox Code Playgroud)

输出

   A  B
0  0  0
1  1  1
2  1  0
3  1  0
4  1  0
5  1  1
Run Code Online (Sandbox Code Playgroud)

如果要使用 np.where,请执行以下操作:

df['A'] = np.where(df.index < df['B'].idxmax(), df['A'], 1)
print(df)
Run Code Online (Sandbox Code Playgroud)

如果列B可以有除 0 和 1 之外的其他值,请执行以下操作:

df['A'] = np.where(df.index < df['B'].eq(1).idxmax(), df['A'], 1)
Run Code Online (Sandbox Code Playgroud)