我正在将时间序列数据的csv文件读入pandas DataFrame并提取两个相关列,如下所示:
import pandas as pd
df = pd.read_csv('C:\Users\Stuart\Documents\SPYDER\Joint_Strat.csv', index_col=0)
df2 = df['weighted ret']
df2.head()
date
02/01/2007 0.002432
02/01/2007 0.001216
02/01/2007 0.001216
03/01/2007 0.000597
03/01/2007 0.000448
Name: weighted ret, dtype: float64
我想按天计算“加权回收”列,以便每个日期只显示一次,并且该日的总和相应。我尝试了以下方法:
df2 = df2.resample('D',how='sum')
但是得到错误:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
然后我尝试通过以下方式将索引更改为日期时间:
import dateutil
df2.index = pd.to_datetime(df2.index)
然后运行
df2 = df2.resample('D',how='sum')
试。
似乎运行但是当我打印出来时
df2.head(10)
我得到以下内容:
2007-01-02 -0.002244
2007-01-03 0.001009
2007-01-04 NaN
2007-01-05 NaN
2007-01-06 -0.000732
2007-01-07 NaN
2007-01-08 0.002016
2007-01-09 NaN
2007-01-10 0.001267
2007-01-11 -0.0012
这是不正确的,因为我有显示NaN的日期值,实际上显示的数字不是每个日内回报总和的正确值。
我认为这应该很简单,但我无法让它正常工作,不知道从哪里开始。有人可以建议我哪里出错吗?非常感谢
答案 0 :(得分:1)
您应该能够按如下方式对系列的索引进行分组:
df2.groupby(level=0).sum()
答案 1 :(得分:0)
每日样本的DataFrame.resample(),其中包含=" sum"