我有以下数据框:
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
粘贴到其中。
我该如何解决这个问题?
答案 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