колонны панд разворачиваются в строки - PullRequest
0 голосов
/ 06 октября 2018

У меня есть кадр данных, такой как приведенный ниже, для которого я применил некоторые операции.

Исходный кадр данных df:

index   item   value    day     time
0   P472   0.126    2011-12-08  00:00:00
1   P472   0.12     2011-12-08  00:30:00
2   P472   0.119    2011-12-08  01:00:00
3   P472   0.425    2011-12-08  01:30:00
4   P472   0.154    2011-12-08  02:00:00

Я повернул кадр данных с кодом ниже, чтобы получитьновый кадр данных ниже:

df_pivoted = df.pivot_table(index=['item', 'day'], columns='time',
                 values='value', aggfunc='first').reset_index()

df_pivoted:

index   item   day      00:00:00 00:30:00 ... 23:30:00
0   P472   2011-12-08   0.126    0.12     ...   0.18
1   P473   2011-12-08   0.5      0.55     ...   0.30

Теперь я хочу повторно повернуть df_pivoted в макете исходного кадра данных, т.е. свернуть столбцы 00:00:00через 23:30:00 в столбец времени, каждый 24-часовой период в течение определенного дня и повторное представление столбца значений (используя df_pivoted.stack?), но я не могу понять, как это сделать.Есть идеи>?

1 Ответ

0 голосов
/ 06 октября 2018

Обратное значение pd.pivot_table может быть достигнуто с помощью pd.melt:

df_melted = df_pivoted.melt(id_vars=['index', 'item', 'day', 'time'],
                            value_vars=['value']).drop('variable', 1)

print(df)

   index  item  value         day      time
0      0  P472  0.126  2011-12-08  00:00:00
1      1  P472  0.120  2011-12-08  00:30:00
2      2  P472  0.119  2011-12-08  01:00:00
3      3  P472  0.425  2011-12-08  01:30:00
4      4  P472  0.154  2011-12-08  02:00:00

Стоит отметить, что это работает, потому что ваша функция агрегирования 'first' и комбинации ['index', 'item', 'day', 'time'] уникальны.Если это не так, тогда сводная таблица будет агрегировать данные и терять информацию, которую нельзя будет собрать снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...