我有一个关于数据框重新采样的问题。
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
。
.sum()
或.mean()
。例如,如果你有另外一列名为val
。你可以使用df.resample('W', on='date')[['num', 'val']].sum()
来获取这两列的总和。 - harvpan.sum()
,而对另一个使用.mean()
呢? - Konstantin