gpt4 book ai didi

python - 按pandas DataFrame中的选定行填充

转载 作者:行者123 更新时间:2023-12-04 00:31:43 24 4
gpt4 key购买 nike

我有下一个 Pandas 数据帧:

a b c 
1 1 5.0
1 1 None
1 1 4.0
1 2 1.0
1 2 1.0
1 2 4.0
2 1 3.0
2 1 2.0
2 1 None
2 2 3.0
2 2 4.0

我要换 None ,但不是按列的意思。我想选择所有行,其中 a 中的值和 b是相似的,如果 c有一个 None - 选定行中的值,仅将它们替换为 c - 所选行的平均值。类似于(此代码不起作用):
df[df[('a'==1) & ('b'==1)]]['c'].fillna(df[df[('a'==1) & ('b'==1)]]['c'].mean())

这应该让我得到输出:
a b c 
1 1 5.0
1 1 4.5
1 1 4.0
1 2 1.0
1 2 1.0
1 2 4.0
2 1 3.0
2 1 2.0
2 1 None
2 2 3.0
2 2 4.0

最佳答案

您需要 c 的过滤器值按条件分配回列c :

mask = (df['a']==1) & (df['b']==1)
mean = df.loc[mask, 'c'].mean()
df.loc[mask, 'c'] = df.loc[mask, 'c'].fillna(mean)

或使用 mask 按条件替换:
df['c'] = df['c'].mask(mask, df['c'].fillna(mean))
#similar
#df['c'] = np.where(mask, df['c'].fillna(mean), df['c'])

print (df)
a b c
0 1 1 5.0
1 1 1 4.5
2 1 1 4.0
3 1 2 1.0
4 1 2 1.0
5 1 2 4.0
6 2 1 3.0
7 2 1 2.0
8 2 1 NaN
9 2 2 3.0
10 2 2 4.0

关于python - 按pandas DataFrame中的选定行填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49963491/

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