Python:如何合并来自两个不同数据框的特定列

时间:2018-09-16 09:40:36

标签: python pandas

我是一名新的python用户,想问一下是否有可能合并或合并来自不同数据帧的数据帧,但是它们具有一列具有相同信息的数据吗?

Data 1             Data2
DocID GroupID      DocID  ClassID    
123     A12        123    X
123     A24        123    Y
124     A24        124    Z
124     C12        124    F
125     A12        125    G

我希望结果会像这样

Results
            DocID  123 124 125
Group_ID Class_ID
  A12      X        1   0   0
  A24      Y        1   0   0
  A24      Z        0   1   0
  C12      F        0   0   1
  A12      G        0   0   1

感谢您提前帮助T ___ T

1 个答案:

答案 0 :(得分:0)

要合并数据集,可以在将DocID设置为索引后(如果尚未设置)将它们连接起来:

>>> merged = pd.concat((df1.set_index('DocID'), df2.set_index('DocID')), axis=1)
>>> print(merged)

      GroupID ClassID
DocID
123       A12       X
123       A24       Y
124       A24       Z
124       C12       F
125       A12       G

在此之后,要模仿所需的结果,您需要获取索引的虚拟对象。一种简单的方法是在重置索引后使用pd.get_dummies来获取它们:

>>> pd.get_dummies(merged.reset_index(), columns=['DocID'])

      GroupID ClassID  DocID_123  DocID_124  DocID_125
0     A12       X          1          0          0
1     A24       Y          1          0          0
2     A24       Z          0          1          0
3     C12       F          0          1          0
4     A12       G          0          0          1

但是,如果您确实需要多索引虚拟变量,则需要对索引进行虚拟化,然后从中构造出多索引列,并将其与merged数据帧连接起来。