【问题标题】:Merge 2 dataframes on Days and Month在日期和月份上合并 2 个数据框
【发布时间】:2018-03-19 13:33:15
【问题描述】:

我有以下数据框:

print(df1)

day   month   quantity   Operation_type
21     6         6           2
24     6         4           2
...

print(df2)
day   month   quantity  Operation_type 
22     6         10          1
23     6         15          1
...

我想获取以下数据集:

print(final_df)

day   month   quantity  Operation_type 
21     6         6             2
22     6         10            1
23     6         15            1
24     6         4             2
...

我尝试使用:

final_df = pd.merge(df1, df2, on=['day','month']) 但它创建了一个巨大的数据集并且似乎无法正常工作;

此外,如果日期和月份相同,我想将Operation_type == 2 的那一行粘贴到==1 之前。

我该如何解决这个问题?

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    要将 DataFrame 合并为一个,您不需要合并,而是需要 pd.concat。要正确订购,只需使用DataFrame.sort_values

    pd.concat([df1, df2]).sort_values(by=['day', 'month', 'Operation_type'], 
        ascending=[True, True, False])
    

    【讨论】:

      【解决方案2】:

      您可以执行外部合并来实现此结果。

      res = pd.merge(df1, df2, how='outer').sort_values('day')
      
      #    day  month  quantity  Operation_type
      # 0   21      6         6               2
      # 2   22      6        10               1
      # 3   23      6        15               1
      # 1   24      6         4               2
      

      【讨论】:

        猜你喜欢
        • 2021-05-25
        • 2019-10-26
        • 2021-11-17
        • 1970-01-01
        • 2021-09-13
        • 2019-06-06
        • 2015-10-30
        • 1970-01-01
        • 2018-11-22
        相关资源
        最近更新 更多