我很长一段时间以来一直在努力解决这个问题,所以我希望有人可以帮助我。
我在python中有一个时间序列,如下所示:
Dates
2011-01-10 -1500
2011-01-13 1500
2011-01-13 -4000
2011-01-26 -1000
2011-02-02 4000
2011-02-10 -4000
2011-03-03 1000
2011-03-03 2200
2011-06-03 3300
2011-05-03 -1500
2011-06-10 -1200
2011-08-01 -55
2011-08-01 55
2011-12-20 1200
dtype: int32
正如您所看到的,有相同日期的倍数。我想合并这些,然后将值相加,结果是:
Dates
2011-01-10 -1500
2011-01-13 -2500
2011-01-26 -1000
2011-02-02 4000
2011-02-10 -4000
2011-03-03 3200
2011-06-03 3300
2011-05-03 -1500
2011-06-10 -1200
2011-08-01 0
2011-12-20 1200
dtype: int32
知道解决方案的人吗?
提前致谢。
答案 0 :(得分:1)
怎么样:
ts.groupby(ts.index).sum()
或
ts.groupby(level=0).sum()
答案 1 :(得分:0)
假设您的索引是正确的日期,您可以重新采样到每日间隔。这会在缺失日期输入NaN值,之后需要删除:
ts.resample('D', how='sum').dropna()
更通用的解决方案是对索引进行分组,如果您的索引由字符串或其他内容组成,这甚至可以工作:
ts.groupby(lambda x: x).sum()
如果您的时间戳也包含每小时或其他信息,则上述操作不起作用,因为它仅按相等的值进行分组。然后,您可以使用以下命令将索引格式化为时间戳的“日期部分”:
ts.groupby(lambda x: x.strftime('%Y-%m-%d')).sum()
答案 2 :(得分:0)
sums = ts.groupby('Date').sum()
您可以通过按sums
时间序列中的日期分组并对值进行求和来创建名为ts
的新系列。