熊猫平均每行大小为 5 的块

Posted

技术标签:

【中文标题】熊猫平均每行大小为 5 的块【英文标题】:pandas mean per row in chunks of size 5 【发布时间】:2020-05-21 11:01:48 【问题描述】:

我有一个[100, 50000] 形状的数据框 我想通过以 5 为一组应用每行的平均值来减少它。(所以我将得到一个形状为[100, 10000] 的数据框)。 例如, 所以,如果该行是

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

输出将是

[2,7]

最有效的方法是什么?

谢谢

【问题讨论】:

这能回答你的问题吗? Calculate average of every x rows in a table and create new table 【参考方案1】:

如果形状是100, 50000 表示100 rows and 50000 columns,则解决方案是GroupBy.mean 和由列的长度创建的助手np.arangeaxis=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

如果形状是100, 50000 表示100 columns and 50000 rows,则解决方案是GroupBy.mean 和由DataFrame 的长度创建的助手np.arange

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

【讨论】:

以上是关于熊猫平均每行大小为 5 的块的主要内容,如果未能解决你的问题,请参考以下文章

如何根据字节大小拆分熊猫数据帧

将数组拆分为不同大小的块(4、3、3、3、4、3、3、3 等)

将数组拆分为具有最小块大小的给定大小的块

将数组拆分为给定大小的块[重复]

具有时间偏移熊猫的滚动平均值

javascript 将数组拆分为相同大小的块