gpt4 book ai didi

Python-在连接上替换 NA 不起作用

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

我正在尝试用一些默认文本值填充 NA 的值。

这是我的 df1

data = [['Alex','10'],['Bob','12'],['Clarke','13']]
df1 = pd.DataFrame(data,columns=['Id','Age'])

这是我的 df2

data = [['Alex','10'],['Clarke','13']]
df2 = pd.DataFrame(data,columns=['Id','Age'])

这是我的 df3

data = [['Alex','10']]
df3 = pd.DataFrame(data,columns=['Id','Age'])

这是我根据此代码的输出

df4 = (pd.concat([df2.set_index('Id'), df3.set_index('Id')], axis=1).reindex(df1.Id, fill_value='IDNP').reset_index())

df1 中的所有 Id 都需要出现在 df4 中。

如果 df2 或 df3 中不存在 ID,则它将被“IDNP”替换。

这是我的代码的输出,

       Id   Age   Age
0 Alex 10 10
1 Bob IDNP IDNP
2 Clarke 13 NaN

我想要什么,

       Id   Age   Age
0 Alex 10 10
1 Bob IDNP IDNP
2 Clarke 13 IDNP

我的代码哪里出错了?

最佳答案

如果需要通过 DataFrame 列表替换 concat 之后的所有缺失值并通过 Id 创建索引,请使用:

dfs = [df1, df2, df3]
df4 = pd.concat([x.set_index('Id') for x in dfs], axis=1).fillna('IDNP')
print (df4)
Age Age Age
Alex 10 10 10
Bob 12 IDNP IDNP
Clarke 13 13 IDNP

您的解决方案创建了错误的值,因为它返回 pd.concat:

print ((pd.concat([df2.set_index('Id'), df3.set_index('Id')], axis=1)))
Age Age
Alex 10 10
Clarke 13 NaN

因此它不会被 fill_value 参数替换。

可能的解决方案是调用fillna:

df4 = (pd.concat([df2.set_index('Id'), df3.set_index('Id')], axis=1)
.fillna('IDNP')
.reindex(df1.Id, fill_value='IDNP')
.reset_index())

关于Python-在连接上替换 NA 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629993/

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