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

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

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

输出将是

[2,7]

最有效的方法是什么?

谢谢

【问题讨论】:

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


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2019-11-24
    • 2022-01-23
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多