1

我已经为这个问题苦苦挣扎了很长时间,所以我希望有人可以帮助我。

我在 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

谁知道解决方案?

提前致谢。

4

3 回答 3

1

怎么样:

ts.groupby(ts.index).sum()

或者

ts.groupby(level=0).sum()

于 2013-10-12T01:50:35.347 回答
0

怎么样sums = ts.groupby('Date').sum()

sums您通过按时间序列中的日期分组ts并对值求和来创建一个新序列。

于 2013-10-01T06:25:43.597 回答
0

假设您的索引是正确的日期,您可以重新采样到每日间隔。这会在缺失的日期引入 NaN 值,之后需要删除这些值:

ts.resample('D', how='sum').dropna()

更通用的解决方案是按索引分组,如果您的索引由字符串或其他内容组成,这甚至可以工作:

ts.groupby(lambda x: x).sum()

如果您的时间戳还包含每小时或其他信息,则上述信息将不起作用,因为它仅按相等的值分组。然后,您可以将索引格式化为时间戳的“日部分”:

ts.groupby(lambda x: x.strftime('%Y-%m-%d')).sum()
于 2013-10-01T06:22:45.497 回答