熊猫将数据框值转换为列名

时间:2019-05-09 17:26:11

标签: python pandas dataframe

我想使用数据框值作为列名并简化数据框。

我尝试了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

3 个答案:

答案 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_indexunstack进行尝试,然后使用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