我是一名新的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
答案 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
数据帧连接起来。