上下文:我试图将新数据框中的数据添加到旧数据框中,其中它们之间唯一的区别是数据已被其他信息取代。我将用一个例子来更好地解释我自己:
假设旧的数据框架有这样的结构:
test_old = pd.DataFrame.from_dict({'FactsEN' :['sales','price','promotion','sales','price','promotion'], 'Sales' : [12345,12,11,54321,14,12], 'Type' : ['type1','type1','type1','type2','type2','type2']})
test_new = pd.DataFrame.from_dict({'FactsEN' :['sales','price','new_promotion','sales','price','new_promotion'], 'Sales' : [12345,12,11,54321,14,13], 'Type' : ['type1','type1','type1','type2','type2','type2']})
我如何连接两个数据框架,保持共同的列,并简单地添加它们之间的差异?理想情况下,数据帧将从下面开始:
>>> test_old
FactsEN Sales Type
0 sales 12345 type1
1 price 12 type1
2 promotion 11 type1
3 sales 54321 type2
4 price 14 type2
5 promotion 12 type2
>>> test_new
FactsEN Sales Type
0 sales 12345 type1
1 price 12 type1
2 new_promotion 11 type1
3 sales 54321 type2
4 price 14 type2
5 new_promotion 13 type2
:
FactsEN Sales Type
0 sales 12345 type1
1 price 12 type1
2 promotion 11 type1
3 new_promotion 11 type1
4 sales 54321 type2
5 price 14 type2
6 promotion 12 type2
7 new_promotion 13 type2
我正在尝试连接和合并,但他们都没有设法得到输出…
concatenated_dataframe = pd.merge(old,new, how='outer', left_on=new.columns, right_on=old.columns)
非常欢迎任何帮助!
可以在多个列上使用pandas.DataFrame.merge
和join。
pd.merge(test_old, test_new, on=['FactsEN', 'Sales', 'Type'], how="outer")
这给了我们预期的数据FactsEN Sales Type
0 sales 12345 type1
1 price 12 type1
2 promotion 11 type1
3 sales 54321 type2
4 price 14 type2
5 promotion 12 type2
6 new_promotion 11 type1
7 new_promotion 13 type2
您可以使用pd。连接并删除重复项:
pd.concat([test_old, test_new], ignore_index=True).drop_duplicates().reset_index(drop=True)