gpt4 book ai didi

python - 根据具有相同形状的其他 data.frame 中的值替换 data.frame 中的值(Python)

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

我必须data.frames df1df2并具有完全相同的大小和列名,但值不同。 df2有多少NaNdf1只有一点。我要每一个NaNdf2成为0 , 如果 df1 中有任何值在同一个地方(除了 NaN )。
例如。:

df1
a b c
0 1 5 NaN
1 2 4 8
2 5 8 5
3 8 8 1
4 7 3 2
5 NaN 5 1

df2
a b c
0 5 5 NaN
1 NaN 4 8
2 3 8 NaN
3 NaN NaN 8
4 9 NaN 6
5 NaN 5 7
结果应该是这样的。
df2
a b c
0 5 5 NaN
1 0 4 8
2 3 8 0
3 0 0 8
4 9 0 6
5 NaN 5 7
我对 Python 还是个新手,到目前为止找不到解决方案。不成功我试过:
for row in range(len(df1)):
if df1.iloc[row,1:] >= 0:
df2[row,1:] == 0
elif df1.iloc[row,1:] == '':
df2.iloc[row,1:] == ''

最佳答案

您可以先将 df2 设置为 0,其中 df1 不为空,然后取 np.fmax 忽略 NaN计算 2 个数组的元素最大值时:

np.fmax(df2,df2.mask(df1.notna(),0))
编辑,感谢@Ben.T 指出,以上仅适用于正值,请改用以下内容:
df2.fillna(0).where(df1.notna())
     a    b    c
0 5.0 5.0 NaN
1 0.0 4.0 8.0
2 3.0 8.0 0.0
3 0.0 0.0 8.0
4 9.0 0.0 6.0
5 NaN 5.0 7.0

关于python - 根据具有相同形状的其他 data.frame 中的值替换 data.frame 中的值(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67302850/

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