我有以下数据框。
ID D F G Q
0 T1 1 3 4 5
1 T2 2 3 2 6
2 T3 4 7 7 8
3 T4 5 6 7 8
4 T5 6 9 0 9
ID Q F G D
0 T10 10 54 44 55
1 T12 20 45 43 55
2 T11 30 45 65 55
3 T4 12 43 65 78
4 T5 42 45 87 90
我想将它们串联起来。但是我希望T4和T5(在两个数据帧中都存在)值与第一个数据帧一致。数据帧的列顺序也不相同。我想要的最终数据框如下所示。
ID D F G Q
0 T1 1 3 4 5
1 T2 2 3 2 6
2 T3 4 7 7 8
3 T4 5 6 7 8
4 T5 6 9 0 9
0 T10 55 54 44 10
1 T12 55 45 43 20
2 T11 55 45 65 30
如何获得这个?
您可以从第二个数据框中过滤出ID也出现在第一个数据框中的行之后使用pd.concat
功能。>>
import pandas as pd
DF1 = pd.DataFrame({'ID': ['T1','T2','T3','T4','T5'],
'D':[1,2,4,5,6],
'F': [3,3,7,6,9],
'G': [4,2,7,7,0],
'Q': [5,6,8,8,9]})
DF2 = pd.DataFrame({'ID': ['T10','T12','T11','T4','T5'],
'Q':[10,20,30,12,42],
'F': [54,45,45,43,45],
'G': [44,43,65,65,87],
'D': [55,55,55,78,90]})
# remove from DF2 all rows where ID is also in DF1.ID
DF2_filtered = DF2.loc[~(DF2['ID'].isin(DF1['ID']))]
# concatenate those two dataframes
pd.concat([DF1,DF2_filtered])
# D F G ID Q
#0 1 3 4 T1 5
#1 2 3 2 T2 6
#2 4 7 7 T3 8
#3 5 6 7 T4 8
#4 6 9 0 T5 9
#0 55 54 44 T10 10
#1 55 45 43 T12 20
#2 55 45 65 T11 30
[Concat + drop_duplicates onID
col: