熊猫:每k列汇总

时间:2020-05-27 11:56:22

标签: python pandas dataframe data-manipulation

我有一个数据框,如何获得每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循环的方法吗?

2 个答案:

答案 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