在天和月合并2个数据帧

时间:2018-03-19 13:33:16

标签: python pandas merge

我有以下数据框:

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粘贴到其中。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

要将DataFrame合并为一个,您不希望合并,您需要pd.concat。要正确获得订购,请使用DataFrame.sort_values

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

答案 1 :(得分:1)

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

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