[英]How to get new pandas dataframe with max value of k consecutive rows?
[英]How to get sum of k consecutive rows in pandas dataframe?
我有这个 pandas dataframe:
ts = pd.Series([1, 2, 3, 4, 5, 6, 7, 8])
我想得到的是 dataframe ,其中包含另一列,其中包含四行连续ts
的总和。 总和应放在连续行的每一行中。
在这种情况下,这意味着新的 dataframe 应该如下所示:
index ts sum
0 1 10
1 2 10
2 3 10
3 4 10
4 5 26
5 6 26
6 7 26
7 8 26
我怎么能这样做?
使用GroupBy.transform
整数除以k
:
k = 4
a = ts.groupby(ts.index // k).transform('sum')
#alternative if not RangeIndex
#a = ts.groupby(np.arange(len(ts)) // k).transform('sum')
print (a)
0 10
1 10
2 10
3 10
4 26
5 26
6 26
7 26
dtype: int64
如果需要 2 列的 DataFrame 添加Series.to_frame
:
df = ts.to_frame('ts')
df['sum'] = df.groupby(ts.index // k).transform('sum')
print (df)
ts sum
0 1 10
1 2 10
2 3 10
3 4 10
4 5 26
5 6 26
6 7 26
7 8 26
你也可以试试这个列表理解:
ts = pd.Series([1, 2, 3, 4, 5, 6, 7, 8])
sum_ = sum([[sum(ts[i:i + 4])] * 4 for i in range(0, len(ts), 4)], [])
df = pd.DataFrame({'ts': ts, 'sum': sum_})
print(df)
Output:
sum ts
0 10 1
1 10 2
2 10 3
3 10 4
4 26 5
5 26 6
6 26 7
7 26 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.