Панды преобразуют значения данных в имена столбцов - PullRequest
2 голосов
/ 09 мая 2019

Я хочу использовать значения данных в качестве имен столбцов и упростить данные.

Я пытался df.stack(), а затем index.map('{0[0]}_{0[1]}'.format)

Input_df (Получил этот df, делая групповой):

link price  date
 A     1    01/01
 A     2    01/02
 A     1.2  01/03

Desired_ouput:

link price_01/01 price_01/02 price_01/03
  A      1            2         1.2

Ответы [ 3 ]

6 голосов
/ 09 мая 2019

Забудьте отображение по мультииндексу

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
5 голосов
/ 09 мая 2019

Вы можете попробовать это с помощью 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
3 голосов
/ 09 мая 2019

Вы можете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...