使用两列作为索引来旋转数据帧

时间:2018-05-28 21:26:20

标签: python pandas dataframe pivot

我的数据格式如下:

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中需要一些指导。

2 个答案:

答案 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