我有一个[100, 50000]
形状的数据框
并且我想通过在每行5个块中应用平均数来减少它(因此,我将得到一个[100, 10000]
形状的数据框)。
例如,
因此,如果该行是
[1,8,-1,0,2 , 6,8,11,4,6]
输出将是
[2,7]
最有效的方法是什么?
谢谢
答案 0 :(得分:1)
如果形状为100, 50000
表示100 rows and 50000 columns
,则解决方案为GroupBy.mean
,其中辅助函数np.arange
由列的长度和axis=1
创建:
df = pd.DataFrame([[1,8,-1,0,2 , 6,8,11,4,6],
[1,8,-1,0,2 , 6,8,11,4,6]])
print (df)
0 1 2 3 4 5 6 7 8 9
0 1 8 -1 0 2 6 8 11 4 6
1 1 8 -1 0 2 6 8 11 4 6
print (df.shape)
(2, 10)
df = df.groupby(np.arange(len(df.columns)) // 5, axis=1).mean()
print (df)
0 1
0 2 7
1 2 7
如果shape为100, 50000
表示100 columns and 50000 rows
,则解决方案为GroupBy.mean
,其中辅助元素np.arange
由DataFrame的长度创建:
df = pd.DataFrame({'a': [1,8,-1,0,2 , 6,8,11,4,6],
'b': [1,8,-1,0,2 , 6,8,11,4,6]})
print (df)
a b
0 1 1
1 8 8
2 -1 -1
3 0 0
4 2 2
5 6 6
6 8 8
7 11 11
8 4 4
9 6 6
print (df.shape)
(10, 2)
df = df.groupby(np.arange(len(df)) // 5).mean()
print (df)
a b
0 2 2
1 7 7