Поверните фрейм данных с двумя столбцами в качестве индекса - PullRequest
0 голосов
/ 29 мая 2018

У меня есть данные в следующем формате:

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

Нужны некоторые указания, чтобы сделать это в Пандах.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

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
0 голосов
/ 29 мая 2018

Это 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
...