我想使用数据框值作为列名并简化数据框。
我尝试了df.stack()
,然后尝试了index.map('{0[0]}_{0[1]}'.format)
Input_df(通过执行groupby来获得此df):
link price date
A 1 01/01
A 2 01/02
A 1.2 01/03
期望产量:
link price_01/01 price_01/02 price_01/03
A 1 2 1.2
答案 0 :(得分:6)
df.set_index(['link', 'date']).price.unstack().add_prefix('price_')
date price_01/01 price_01/02 price_01/03
link
A 1.0 2.0 1.2
答案 1 :(得分:5)
您可以使用set_index
和unstack
进行尝试,然后使用Python 3.6+可以将f字符串与列表推导一起使用来扁平化多索引列标题。
df_out = df.set_index(['link', 'date']).unstack()
df_out.columns = [f'{i}_{j}' for i, j in df_out.columns]
df_out.reset_index()
输出:
link price_01/01 price_01/02 price_01/03
0 A 1.0 2.0 1.2
答案 2 :(得分:3)
您可以pivot
您的桌子:
df['date'] = 'price_' + df['date']
df.reset_index(inplace=True)
df = df.pivot(index='link', columns='date', values='price')
print(df)
输出:
date price_01/01 price_01/02 price_01/03
link
A 1.0 2.0 1.2