我的数据格式如下:
Record ID Para Tag
1 A x
1 A y
2 B x
2 B y
1 A z
我想将数据转换为以下格式:
Record Para x_Tag y_Tag z_Tag
1 A 1 1 1
2 B 1 1 0
在Pandas中需要一些指导。
答案 0 :(得分:3)
这是get_dummies
pd.get_dummies(df.set_index(['RecordID','Para'])).sum(level=[0,1]).reset_index()
Out[132]:
RecordID Para Tag_x Tag_y Tag_z
0 1 A 1 1 1
1 2 B 1 1 0
答案 1 :(得分:2)
pivot_table
pivot_table
在这里很好用,应该很快:
df.pivot_table(
index=['Record ID', 'Para'], columns='Tag', aggfunc='size', fill_value=0
).add_prefix('Tag_').reset_index()
Tag Record ID Para Tag_x Tag_y Tag_z
0 1 A 1 1 1
1 2 B 1 1 0
crosstab
pd.crosstab(
[df['Record ID'], df['Para']], df['Tag']
).add_prefix('Tag_').reset_index()
Tag Record ID Para Tag_x Tag_y Tag_z
0 1 A 1 1 1
1 2 B 1 1 0