3.6

2017-09-23 3 views
-1

내가 10 열3.6

df1: col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 

5 열

내가 df1df2을 비교하고 열을 추가 할
df2: col1, col2, col6, col9, col3 

와 다른 데이터 프레임 dataframe을 가지고, 파이썬 차이 열을 2 dataframe을 비교하고 추가 df1 내지 df2이 존재하지 않는다.

이것은 Compare Pandas dataframes and add column과 중복되지 않으므로 df1의 값을 추가하고 싶지 않고 비어있는 열을 추가하기 만하면됩니다.

답변

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 

:

>>> 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

이렇게하려면 색인이 일치해야합니다.

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

새로운 열 목록을 확인하고 추가 다른 열 (들)을 찾기

pd.concat([df1.drop(df2.columns, axis=1), df2], axis=1)