熊猫每行平均大小为5

时间:2020-02-05 13:52:14

标签: pandas dataframe apply data-science data-munging

我有一个[100, 50000]形状的数据框 并且我想通过在每行5个块中应用平均数来减少它(因此,我将得到一个[100, 10000]形状的数据框)。 例如, 因此,如果该行是

[1,8,-1,0,2 , 6,8,11,4,6]

输出将是

[2,7]

最有效的方法是什么?

谢谢

1 个答案:

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