问题描述
我是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楼
要合并数据集,您可以在将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
数据框连接起来。