#python #pandas #dataframe
Вопрос:
Рассмотрим фрейм данных:
timestamp value
0 2019-07-12 18:00:00 8.46
1 2019-07-13 06:00:00 12.02
2 2019-07-13 18:00:00 15.58
3 2019-07-14 06:00:00 16.29
4 2019-07-14 18:00:00 17.00
Я хочу превратиться в:
timestamp X1 X2
0 2019-07-12 8.46 NaN
1 2019-07-13 12.02 15.58
2 2019-07-14 16.29 17.00
Как это можно сделать?
Я попробовал pd.groupby
, Grouper
а затем сделал цикл for, как показано ниже:
for ix, i in resampled_df.groupby(pd.Grouper(key='timestamp', freq="1D")):
print(i.head())
Не повезло!
Ответ №1:
Давайте попробуем с pivot_table
:
# Convert to datetime (if not already)
df['timestamp'] = pd.to_datetime(df['timestamp'])
# Get Series of Dates from Timestamp
dates = df['timestamp'].dt.date
df = (
# Pivot on dates in index, and columns based on rows per group
df.pivot_table(index=dates,
columns=df['value'].groupby(dates).cumcount() 1,
values='value')
.add_prefix('X') # Add X in Front of Columns
.reset_index() # Make dates a column
)
df
:
timestamp X1 X2
0 2019-07-12 8.46 NaN
1 2019-07-13 12.02 15.58
2 2019-07-14 16.29 17.00