在给定窗口大小的情况下在Pandas中聚合时间序列

时间:2016-04-28 13:24:55

标签: pandas

让我说我有这个数据

a = pandas.Series([1,2,3,4,5,6,7,8])

a
Out[313]: 
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
dtype: int64

我想汇总一次对数据n行进行分组的数据,并将它们相加。因此,如果n=2新系列看起来像{3,7,11,15}

2 个答案:

答案 0 :(得分:1)

试试这个:

In [39]: a.groupby(a.index//2).sum()
Out[39]:
0     3
1     7
2    11
3    15
dtype: int64

In [41]: a.index//2
Out[41]: Int64Index([0, 0, 1, 1, 2, 2, 3, 3], dtype='int64')

n = 3的

In [42]: n=3

In [43]: a.groupby(a.index//n).sum()
Out[43]:
0     6
1    15
2    15
dtype: int64

In [44]: a.index//n
Out[44]: Int64Index([0, 0, 0, 1, 1, 1, 2, 2], dtype='int64')

答案 1 :(得分:0)

你可以使用pandas rolling mean并获得如下内容: 如果<?xml version="1.0" encoding="utf-8"?> <xliff xmlns:sdl="http://sdl.com/FileTypes/SdlXliff/1.0" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" sdl:version="1.0"> <file original="Internet_Anti-DrugIntro2015.xml_1457007.xlf" datatype="x-sdlfilterframework2" source-language="en-US" target-language="hu-HU"> <body> <trans-unit translate="no" id="c3a13bfb-ed51-49cf-8278-e2c86c2114c0"> <source> <x id="0"/> </source> </trans-unit> <group> <sdl:cxts> <sdl:cxt id="1"/> </sdl:cxts> <trans-unit id="3b4520df-4483-4c9e-8a9b-ce2544269f3e"> <source> <x id="1"/> </source> <seg-source> <mrk mtype="seg" mid="2"> <x id="1"/>Drugs are robbing our children of their future. </mrk> <mrk mtype="seg" mid="3"> <x id="2"/>Every 17 seconds a teenager experiments with an illicit drug for the first time. </mrk> </seg-source> <target> <mrk mtype="seg" mid="2"> <x id="1"/>A drogok megfosztják gyermekeinket a jövőjüktől. </mrk> <mrk mtype="seg" mid="3"> <x id="2"/>17 másodpercenként egy újabb tizenéves próbálja ki először a kábítószereket. </mrk> </target> </trans-unit> </group> <trans-unit translate="no" id="7890462c-edcb-4fe6-9192-033ba76d9942"> <source> <x id="183"/> </source> </trans-unit> </body> </file> </xliff> 是你的间隔:

n

如果数据可以正确地分成组,第一行可以完美地添加行,否则,我们也可以添加剩余的总和(取决于您的偏好)。 例如,在上述情况下,如果sums = list(a.rolling(n).sum()[n-1::n]) # Optional !!! rem = len(a)%n if rem != 0: sums.append(a[-rem:].sum()) ,则您可能希望获得n=3{6, 15, 15}。上面的代码适用于前一种情况。跳过可选部分只需{6, 15}