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

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

A    B

0    0
0    1
0    0
0    0 
0    0
0    1

我想要一些代码来检查 B 列,当找到 1 时,该 INDEX 中的 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)

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

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


以上是如何通过索引更改基于另一列的一列值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>