熊猫:枢转类型化数据集

时间:2020-07-10 17:59:59

标签: python pandas dataframe

假设我的数据格式如下:

Time, Type, Subtype, Value
0,A,Ab,1
0,A,Ac,2
0,B,Ba,1

我需要:

Time, Type-A-Ab-Value, Type-A-Ac-Value, Type-B-Ba-Value
0, 1, 2, 1

是否有一个熊猫原语可以一击解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用DataFrame.set_index设置多级索引,然后在1, 2级别上使用DataFrame.unstack重塑数据框,然后使用.map展平MultiIndex列:

df1 = df.set_index(['Time', 'Type', 'Subtype']).unstack(level=[1, 2])
df1.columns = df1.columns.map(lambda s: 'Type-' + '-'.join(s[1:]) + '-Value')

或者,也可以使用DataFrame.pivot

df['pvt'] = 'Type-' + df['Type'] + '-' + df['Subtype'] + '-Value'
df1 = df.pivot('Time', 'pvt', 'Value').rename_axis(columns=None)

结果:

print(df1)

      Type-A-Ab-Value  Type-A-Ac-Value  Type-B-Ba-Value
Time                                                   
0                   1                2                1