gpt4 book ai didi

python - Pandas :替换缺失的数据框值/条件计算:fillna

转载 作者:行者123 更新时间:2023-12-05 00:44:48 25 4
gpt4 key购买 nike

我想计算一个 pandas 数据框,但有些行包含缺失值。对于那些缺失值,我想使用不同的算法。让我们说:

  • 如果 B 列包含一个值,则从 B 中减去 A
  • 如果 B 列包含值,则从 C 中减去 A
import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4], 'b':[1,1,None,1],'c':[2,2,2,2]})
df['calc'] = df['b']-df['a']

结果:

print(df)
a b c calc
0 1 1.0 2 0.0
1 2 1.0 2 -1.0
2 3 NaN 2 NaN
3 4 1.0 2 -3.0

方法 1: 使用 .where 填充 NaN 行:

df['calc'].where(df['b'].isnull()) = df['c']-df['a']

导致SyntaxError: cannot assign to function call

方法 2: 使用 .iterrows() 填充 NaN 行:

for index, row in df.iterrows():
i = df['calc'].iloc[index]

if pd.isnull(row['b']):
i = row['c']-row['a']
print(i)
else:
i = row['b']-row['a']
print(i)

执行无误且计算正确,这些i值打印到控制台:

0.0
-1.0
-1.0
-3.0

值没有写入df['calc'],数据帧保持原样:

print(df['calc'])
0 0.0
1 -1.0
2 NaN
3 -3.0

覆盖 NaN 值的正确方法是什么?

最佳答案

最后,我偶然发现了.fillna:

df['calc'] = df['calc'].fillna( df['c']-df['a'] )

完成任务!谁能解释一下上述两种方法有什么问题...?

关于python - Pandas :替换缺失的数据框值/条件计算:fillna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65811195/

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