我是python新用户,正在尝试合并具有相似信息的一列数据框。
Data 1 Data2
DocID GroupID DocID ClassID
122 A12 121 A
122 A24 121 B
123 C12 122 C
124 C23 123 C
125 A12 123 D
我希望结果会像这样
Results
DocID 121 122 123 124 125
GroupID ClassID
Null A 1 0 0 0 0
Null B 1 0 0 0 0
A12 C 0 1 0 0 0
A24 C 0 1 0 0 0
C12 C 0 0 1 0 0
C12 D 0 0 1 0 0
A12 Null 0 0 0 0 1
实际上,我正在考虑映射功能并删除Null。
答案 0 :(得分:2)
使用merge
和get_dummies
df2 = df.merge(df1, on='DocID', how='outer').set_index(['GroupID','ClassID'])
df2 = pd.get_dummies(df2.DocID).sort_index(level=0)
print (df2)
121 122 123 124 125
GroupID ClassID
NaN A 1 0 0 0 0
B 1 0 0 0 0
A12 NaN 0 0 0 0 1
C 0 1 0 0 0
A24 C 0 1 0 0 0
C12 C 0 0 1 0 0
D 0 0 1 0 0
C23 NaN 0 0 0 1 0
答案 1 :(得分:0)
import pandas as pd
data1 = pd.DataFrame({'DocID': [122,122,123,124,125], 'GroupID': ['A12','A24', 'C12', 'C23', 'A12']})
data2 = pd.DataFrame({'DocID': [121,121,122,123,123], 'ClassID': ['A','B', 'C', 'C', 'D']})
merged_data = pd.merge(data1, data2, on='DocID', how='outer')
merged_data.set_index(['GroupID', 'ClassID'], inplace=True)
result = pd.get_dummies(merged_data, columns=['DocID'], prefix='', prefix_sep='')
result.sort_values(sorted(result.columns), ascending=False, inplace=True)
result