如何通过索引更改基于另一列的一列值
我有一个包含两列的数据框:
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)