Python 熊猫:每k列汇总一次
我有一个数据帧,如何才能得到每K个cloumn的列和 例如,从Python 熊猫:每k列汇总一次,python,pandas,dataframe,data-manipulation,Python,Pandas,Dataframe,Data Manipulation,我有一个数据帧,如何才能得到每K个cloumn的列和 例如,从 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
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循环的情况下,有什么方法可以做到这一点吗?您可以使用带辅助数组的整数除法
/
,按列的长度,通过axis=1
传递到groupby
,并使用聚合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
您可以将整数除以
/
与按列长度的辅助数组一起使用,并通过聚合求和传递到groupby
axis=1
:
#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
可以在窗口大小为2的轴1上使用
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
可以在窗口大小为2的轴1上使用
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