2017-09-23 50 views

回答

1
dfa = pd.DataFrame({'a':[1,2,3], 'b':[5,6,7]}) 
dfb = pd.DataFrame({'a':[7,7,7], 'c':[4,4,4], 'e':[0,0,0]}) 

>>> dfa 
    a b 
0 1 5 
1 2 6 
2 3 7 
>>> dfb 
    a c e 
0 7 4 0 
1 7 4 0 
2 7 4 0 

查找与不同的列(S)

>>> col_diff = dfb.columns.difference(dfa.columns) 
>>> col_diff 
Index(['c', 'e'], dtype='object') 

使新列的列表,并将它们添加:

>>> new = col_diff.tolist() 
>>> new 
['c', 'e'] 
>>> 
>>> for col in new: 
...  dfa[col] = None 

>>> dfa 
    a b  c  e 
0 1 5 None None 
1 2 6 None None 
2 3 7 None None 
>>> 

使用DataFrame.assign(相同的初始DataFrames)

>>> # try it when the df indices are different 
>>> dfc = dfb.set_index('a') 
>>> dfc 
    c e 
a  
7 4 0 
7 4 0 
7 4 0 

>>> diff = dfc.columns.difference(dfa.columns) 
>>> new = diff.tolist() 
>>> new = {col:None for col in new} 
>>> dfa = dfa.assign(**new) 

>>> dfa 
    a b  c  e 
0 1 5 None None 
1 2 6 None None 
2 3 7 None None 
0

要做到这一点,指数必须匹配。假设他们这样做,你可以试试:

pd.concat([df1.drop(df2.columns, axis=1), df2], axis=1) 
相关问题