Pandas - укладка нескольких столбцов - PullRequest
1 голос
/ 22 февраля 2020

У меня есть следующий построенный DataFrame:

  Movies      Cost    Tickets
0   1158  0.000000   2.000000
1   1158  0.000000   0.000000
2   1158  0.000000   0.000000
3   1158  0.000000   3.000000

Я использовал stack (), чтобы изменить свою конфигурацию на:

                                           Event 1  
0              Movies                         1158
1                Cost                     0.000000
2             Tickets                     2.000000
3              Movies                         1158
4                Cost                     0.000000
5             Tickets                     0.000000
6              Movies                         1158
7                Cost                     0.000000
8             Tickets                     0.000000
9              Movies                         1158
10               Cost                     0.000000
11            Tickets                     3.000000

, но это укладывает верхнюю часть данных каждого другой, я хотел создать новый столбец с конечной целью:

                            Event 1   Event 2   Event 3   Event 4
0              Movies          1158      1158      1158      1158
1                Cost      0.000000  0.000000  0.000000  0.000000
2             Tickets      2.000000  0.000000  0.000000  3.000000

Вот моя текущая конфигурация:

df = pd.DataFrame({
     'Tickets': pd.Series(Tickets),
     'Movies': pd.Series(Movies),
     'Cost': pd.Series(costs)})


print(df)

df.columns.name = ''

stackEvent3 = df.stack()
stackEvent3 = df.stack().reset_index(level=0, drop=True).reset_index(name='Event1')

Любое руководство очень ценится, спасибо!

1 Ответ

2 голосов
/ 22 февраля 2020

Используйте DataFrame.transpose с DataFrame.add_prefix:

new_df = df.T.rename(columns=dict(zip(df.index, df.index+1))).add_prefix('Event ')
         Event 1  Event 2  Event 3  Event 4
Movies    1158.0   1158.0   1158.0   1158.0
Cost         0.0      0.0      0.0      0.0
Tickets      2.0      0.0      0.0      3.0

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

df.T.rename(columns=dict(zip(df.index, ['brown', 'purple', 'yellow', 'blue'])))

или

new_df = df.T
new_df.columns = ['brown', 'purple', 'yellow', 'blue']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...