我有多个具有不同索引和不同列的数据框。 我想将它们合并,并希望将具有相同名称的那些列合并为一个。 我尝试了外部联接,但不会合并具有相同名称的列。 同样适用于pd.update,但是由于我的数据具有不同的索引,因此这似乎无法正常工作。 有人可以给我一些建议吗?谢谢。
输入>
ID Cat1 Cat2
1 0 75
2 61 0
ID Cat2 Cat3
3 5 75
ID Cat2 Cat4
4 54 40
5 20 38
所需的输出>
ID Cat1 Cat2 Cat3 Cat4
1 0 75 0 0
2 61 0 0 0
3 0 5 75 0
4 0 54 0 40
5 0 20 0 38
答案 0 :(得分:1)
您可以先从set_index
到ID
,然后链接combine_first
:
df1 = pd.DataFrame({'ID': {0: 1, 1: 2}, 'Cat1': {0: 0, 1: 61}, 'Cat2': {0: 75, 1: 0}}).set_index("ID")
df2 = pd.DataFrame({'ID': {0: 3}, 'Cat2': {0: 5}, 'Cat3': {0: 75}}).set_index("ID")
df3 = pd.DataFrame({'ID': {0: 4, 1: 5}, 'Cat2': {0: 54, 1: 20}, 'Cat4': {0: 40, 1: 38}}).set_index("ID")
print (df1.combine_first(df2).combine_first(df3).fillna(0))
Cat1 Cat2 Cat3 Cat4
ID
1 0.0 75.0 0.0 0.0
2 61.0 0.0 0.0 0.0
3 0.0 5.0 75.0 0.0
4 0.0 54.0 0.0 40.0
5 0.0 20.0 0.0 38.0
答案 1 :(得分:0)