изменение дневных данных по внутридневным значениям панд - PullRequest
0 голосов
/ 25 октября 2018

У меня есть DF, который выглядит так:

                             Last
1996-02-26 09:31:00     65.750000
1996-02-26 09:32:00     65.890625
1996-02-26 09:33:00           NaN

1996-03-27 09:31:00    266.710000
1996-03-27 09:32:00    266.760000
1996-03-27 09:33:00    266.780000

Я хочу изменить свои данные, чтобы они выглядели так:

         1996-02-26    1996-03-27
9:31:00   65.75           266.71
9:32:00   65.890625       266.76
9:33:00   NaN             266.78

Как я могу сделать это в пандах?

Ответы [ 2 ]

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

Вы можете использовать панд pivot_table, предполагая, что ваш фрейм данных имеет индекс уровня datetime.Назначьте date и time для разделения переменных, а затем используйте этот подход

date = df.index.date
time = df.index.time
# Use pivot_table to reshape dataframe
df_reshaped = df.pivot_table(index=time, columns=date, values='Last')
df_reshaped

          1996-02-26  1996-03-27
09:31:00   65.750000      266.71
09:32:00   65.890625      266.76
09:33:00         NaN      266.78
0 голосов
/ 25 октября 2018

Если ваш индекс str dtype, создайте MultiIndex и вызовите unstack:

idx = pd.MultiIndex.from_arrays(zip(*df.index.str.split()))
df = df.set_index(idx)['Last'].unstack(0)

print(df)
          1996-02-26  1996-03-27
09:31:00   65.750000      266.71
09:32:00   65.890625      266.76
09:33:00         NaN      266.78

Альтернативное решение, если значения индекса datetimes:

idx =  pd.MultiIndex.from_arrays([df.index.time, df.index.floor('D')])
df = df.set_index(idx)['Last'].unstack()

print(df)
          1996-02-26  1996-03-27
09:31:00   65.750000      266.71
09:32:00   65.890625      266.76
09:33:00         NaN      266.78
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...