并置数据帧,重视来自特定数据帧的重复行

问题描述 投票:0回答:2

我有以下数据框。

    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

如何获得这个?

python pandas
2个回答
0
投票

您可以从第二个数据框中过滤出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

0
投票

[Concat + drop_duplicates onIDcol:

© www.soinside.com 2019 - 2024. All rights reserved.