gpt4 book ai didi

python - 如何在 Python 中使用 for 循环用 NA 替换缺失值

转载 作者:行者123 更新时间:2023-12-05 03:26:13 27 4
gpt4 key购买 nike

我有一个包含 2 个特征的数据框,这些特征是我使用 python 代码创建的:

data_df = {"Age" : [10, 20, 30, 40, 50, np.NaN, np.NaN, np.NaN, np.NaN],
"Name" : ["A", "B", "C", "D", "E", "F", "G", "H", "I"]}
data_df = pd.DataFrame(data_df)
data_df.head(7)
<表类="s-表"><头><日> 年龄姓名<正文>010.0一个120.0B230.0C340.0D450.0E5NaNF6NaNG

现在我想将所有 Name 值替换为 NA,其中 age 也是 NA,所以我使用 for 循环,如下所示:

am_decision = []

for (x,y) in zip(data_df['Age'],data_df['Name']):
if x == np.NaN:
am_decision.append(np.NaN)
else:
am_decision.append(y)
print(len(am_decision))
print(am_decision)

输出 == 9
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

如您所见,上面的 for 循环代码不起作用。我错过了什么吗?

最佳答案

要测试缺失值,请使用 pandas.isna :

am_decision = []

for (x,y) in zip(data_df['Age'],data_df['Name']):
if pd.isna(x):
am_decision.append(np.NaN)
else:
am_decision.append(y)
print(len(am_decision))
print(am_decision)
['A', 'B', 'C', 'D', 'E', nan, nan, nan, nan]

非循环解决方案更快更简单 - 使用 Series.maskSeries.isna :

out = data_df['Name'].mask(data_df['Age'].isna())
print (out)
0 A
1 B
2 C
3 D
4 E
5 NaN
6 NaN
7 NaN
8 NaN
Name: Name, dtype: object

out = data_df['Name'].mask(data_df['Age'].isna()).tolist()
print (out)
['A', 'B', 'C', 'D', 'E', nan, nan, nan, nan]

关于python - 如何在 Python 中使用 for 循环用 NA 替换缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71792666/

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