gpt4 book ai didi

python - 左合并两个数据框并仅填充 Pandas 中的 NaN 值

转载 作者:行者123 更新时间:2023-12-04 10:53:28 25 4
gpt4 key购买 nike

对于数据帧 df1df2 , 我想根据 date 左合并它们获取 df , 如果 v1v2有值,然后取它们,否则取来自 df2 的值.

df1

      date    v1    v2
0 2017-01 12.0 1.0
1 2017-02 2.0 13.0
2 2017-03 15.0 3.0
3 2017-04 NaN NaN
4 2017-05 NaN NaN

df2
      date  v1  v2  v3  v4
0 2017-01 13 9 7 7
1 2017-02 5 7 5 56
2 2017-03 15 8 6 9
3 2017-04 12 14 8 0
4 2017-05 8 8 4 6

刚试过,但我得到:
df = pd.merge(df1, df2, how = 'left', on = 'date')

输出:
      date  v1_x  v2_x  v1_y  v2_y  v3  v4
0 2017-01 12.0 1.0 13 9 7 7
1 2017-02 2.0 13.0 5 7 5 56
2 2017-03 15.0 3.0 15 8 6 9
3 2017-04 NaN NaN 12 14 8 0
4 2017-05 NaN NaN 8 8 4 6

如何获得所需的输出如下?谢谢。
      date  v1  v2  v3  v4
0 2017-01 12 1 7 7
1 2017-02 2 13 5 56
2 2017-03 15 3 6 9
3 2017-04 12 14 8 0
4 2017-05 8 8 4 6

请注意 date 中存在重复值来自 df1df2 .

最佳答案

尝试使用 fillna :

print(df1.fillna(df2).join(df2[df2.columns.drop(df1.columns)]))

要不就:
print(df1.fillna(df2).join(df2[['v3', 'v4']]))

两个输出:
      date    v1    v2  v3  v4
0 2017-01 12.0 1.0 7 7
1 2017-02 2.0 13.0 5 56
2 2017-03 15.0 3.0 6 9
3 2017-04 12.0 14.0 8 0
4 2017-05 8.0 8.0 4 6

关于python - 左合并两个数据框并仅填充 Pandas 中的 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350285/

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