У меня вопрос по поводу передискретизации DataFrames.
import pandas as pd
df = pd.DataFrame([['2005-01-20', 10], ['2005-01-21', 20],
['2005-01-27', 40], ['2005-01-28', 50]],
columns=['date', 'num'])
# Convert the column to datetime
df['date'] = pd.to_datetime(df['date'])
# Resample and aggregate results by week
df = df.resample('W', on='date')['num'].sum().reset_index()
print(df.head())
# OUTPUT:
# date num
# 0 2005-01-23 30
# 1 2005-01-30 90
Все работает, как и ожидалось, но я бы хотел лучше понять, что именно resample()
, ['num']
и sum()
делают здесь.
ВОПРОС # 1
Почему происходит следующее:
Результат df.resample('W', on='date')
равен DatetimeIndexResampler
.
результат df.resample('W', on='date')['num']
равен pandas.core.groupby.SeriesGroupBy
.
Результат df.resample('W', on='date')['num'].sum()
равен
date
2005-01-23 30
2005-01-30 90
Freq: W-SUN, Name: num, dtype: int64
ВОПРОС # 2
Есть лиспособ получить те же результаты без пересчета?Например, используя groupby
.