gpt4 book ai didi

python - 根据 pandas 中的条件更改数据框的第一行

转载 作者:行者123 更新时间:2023-12-01 08:26:24 26 4
gpt4 key购买 nike

我有 2 列的值,我只想更新 1 行的第三列。

我有-

df = pd.DataFrame({'A':[1,1,2,3,4,4],
'B':[2,2,4,3,2,1],
'C':[0] * 6})
print (df)
A B C
0 1 2 0
1 1 2 0
2 2 4 0
3 3 3 0
4 4 2 0
5 4 1 0

如果 A= 1 且 B=2,则只有第一行有 C=1,如下所示 -

print (df)
A B C
0 1 2 1
1 1 2 0
2 2 4 0
3 3 3 0
4 4 2 0
5 4 1 0

现在我已经用过

df.loc[(df['A']==1) & (df['B']==2)].iloc[[0]].loc['C'] = 1

但它不会改变数据框。

最佳答案

如果始终匹配至少一行的解决方案:

创建 bool 掩码并通过 idxmax 设置为第一个 True 索引值:

mask = (df['A']==1) & (df['B']==2)

df.loc[mask.idxmax(), 'C'] = 1

但是如果没有匹配的值idxmax返回第一个False值,因此添加了if-else:

mask = (df['A']==1) & (df['B']==2)

idx = mask.idxmax() if mask.any() else np.repeat(False, len(df))
df.loc[idx, 'C'] = 1
print (df)
A B C
0 1 2 1
1 1 2 0
2 2 4 0
3 3 3 0
4 4 2 0
5 4 1 0
<小时/>
mask = (df['A']==10) & (df['B']==20)

idx = mask.idxmax() if mask.any() else np.repeat(False, len(df))
df.loc[idx, 'C'] = 1
print (df)
A B C
0 1 2 0
1 1 2 0
2 2 4 0
3 3 3 0
4 4 2 0
5 4 1 0

关于python - 根据 pandas 中的条件更改数据框的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54212583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com