将2个pandas数据帧合并为1,具有数据优先级

时间:2018-06-02 13:40:05

标签: python pandas dataframe combinations

我有2个数据帧:

df.assign(ranking_class=(df.ranking // 3).astype(int))

      club_name  tr_begin  year  ranking  ranking_class
0  ADO Den Haag      1357  2010      6.0              2
1  ADO Den Haag      1480  2011     15.0              5
2  ADO Den Haag      1397  2012      9.0              3
3  ADO Den Haag      1384  2013      9.0              3
4  ADO Den Haag      1451  2014     13.0              4

我想在A中添加一些我没有但在B中有的列和行,而不更改A中的现有数据

因此,A必须是:

A = [ A  B  C
name1 1  2  3
name2 1  2  3
name3 1  2  3
]

B = [  A  B  C  D
name1 11 12 13 12
name2 12 22 23 23
name3 31 32 33 14
name4 41 42 43 44
] 

我应该怎么做?

2 个答案:

答案 0 :(得分:2)

使用 combine_first

df1.combine_first(df2).astype(int)

        A   B   C   D
name1   1   2   3  12
name2   1   2   3  23
name3   1   2   3  14
name4  41  42  43  44

答案 1 :(得分:0)

您可以使用reindex后跟fillna

index = A.index.union(B.index)
columns = A.columns.union(B.columns)
A.reindex(index=index, columns=columns).fillna(B).astype(int)

        A   B   C   D
name1   1   2   3  12
name2   1   2   3  23
name3   1   2   3  14
name4  41  42  43  44