我有一个数据框,如何获得每K个Cloumns的列总和 例如,来自
Name 1 2 3 4
A 2 3 5 8
B 1 2 3 4
C 1 6 8 9
D 2 4 5 5
E 3 3 3 3
每2列求和
Name 1 2
A 5 13
B 3 7
C 7 17
D 6 10
E 6 6
窗口和列数可能非常大。有没有fot循环的方法吗?
答案 0 :(得分:2)
您可以在窗口大小2的轴1上使用df.rolling
。
df.set_index('Name').rolling(2,axis=1).sum().iloc[:,1::2]
2 4
Name
A 5.0 13.0
B 3.0 7.0
C 7.0 17.0
D 6.0 10.0
E 6.0 6.0
答案 1 :(得分:1)
您可以将整数除以//
,并将辅助数组按列长使用,并通过groupby
传递给axis=1
,并将其汇总为sum
:
#if Name is column
df = df.set_index('Name')
K = 2
df = df.groupby(np.arange(len(df.columns)) // K, axis=1).sum()
print (df)
0 1
Name
A 5 13
B 3 7
C 7 17
D 6 10
E 6 6
详细信息:
print (np.arange(len(df.columns)))
[0 1 2 3]
print (np.arange(len(df.columns)) // K)
[0 0 1 1]
或者如果值是以1
开头的连续整数,则可以减去1
并除以
df = df.groupby((df.columns - 1) // K, axis=1).sum()
print (df)
0 1
Name
A 5 13
B 3 7
C 7 17
D 6 10
E 6 6