【问题标题】:Merging Pandas DataFrames with a rule将 Pandas DataFrames 与规则合并
【发布时间】:2019-08-06 10:13:47
【问题描述】:

我正在尝试合并两个具有公共行和列索引的 DataFrame,但是,我希望两个 DataFrame 中都存在具有相似行和列索引的条目。

有没有办法制定规则以保留 df1 中的条目(如果它们存在但如果没有值则使用 df2 中的值)?

所以 df3 = 对 df1,df21 的一些操作

例子:

  df1 = [[[a],[b],[c]],
         [[ ],[e],[ ]],
         [[g],[h],[i]]]

  df2 = [[[ ],[ ],[ ]],
         [[d],[x],[f]],
         [[y],[z],[z]]]

  df3 = [[[a],[b],[c]],
         [[d],[e],[f]],
         [[g],[h],[i]]]

【问题讨论】:

  • 请给出输入和预期输出的正确示例。
  • df3 = df1.combine_first(df2) ?
  • @ChrisA 谢谢这正是我想要的!

标签: pandas dataframe join merge concatenation


【解决方案1】:

我认为您正在寻找熊猫 df.fillna()::

d1 = [['a','b','c'],[None,'e',None],['g','h','i']] 
d2 = [[None,None,None],['d','x','f'],['y','z','z']]
df1,df2 = pd.DataFrame(d1),pd.DataFrame(d2)

df1.fillna(df2)


   0  1  2
0  a  b  c
1  d  e  f
2  g  h  i

【讨论】:

    【解决方案2】:

    你也可以这样用:

    df1[df1.isnull()] = df2.values
    

    【讨论】:

      猜你喜欢
      • 2021-02-22
      • 2018-05-16
      • 1970-01-01
      • 2018-06-25
      • 2020-12-29
      • 2021-07-07
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      相关资源
      最近更新 更多