首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫平均每隔一段时间就会有一个柱子。

熊猫平均每隔一段时间就会有一个柱子。
EN

Stack Overflow用户
提问于 2020-01-29 14:52:37
回答 2查看 355关注 0票数 1

给一只熊猫这样的数据:

代码语言:javascript
运行
复制
    Col_1 Col_2 Col_3 Col_4 Col_5 Col_6
0     1     2     3     4     5     6
1     7     8     9     10    11    12

我想取列子集上的平均值,由给定的间隔来定义。假设间隔是2,那么我想取Col_1和Col_2,Col_3和Col 4以及Col_5和Col6的平均值。如果间隔为3,我希望输出为

代码语言:javascript
运行
复制
    First_Avg  Second_Avg
0      2          5
1      8          11

可以假定,我不能放弃对列的命名。代码:

代码语言:javascript
运行
复制
 import pandas as pd
 df = pd.DataFrame(columns =['Col_'+str(n) for n in range(1,7)], data =np.arange(12).reshape(2,6))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-29 14:53:47

Idea是根据列的长度创建np.arange,然后对组使用整数除法,将其与axis=1和聚合mean传递给groupby

代码语言:javascript
运行
复制
N = 2
df1 = df.groupby(np.arange(len(df.columns)) // N, axis=1).mean().add_prefix('Avg_')
print (df1)
   Avg_0  Avg_1  Avg_2
0    1.5    3.5    5.5
1    7.5    9.5   11.5

N = 3
df1 = df.groupby(np.arange(len(df.columns)) // N, axis=1).mean().add_prefix('Avg_')
print (df1)
   Avg_0  Avg_1
0      2      5
1      8     11

详细信息

代码语言:javascript
运行
复制
print (np.arange(len(df.columns)) // 2)
[0 0 1 1 2 2]

print (np.arange(len(df.columns)) // 3)
[0 0 0 1 1 1]

编辑:如果输出中只有少数列是可能的,则可以通过新列名创建字典,然后使用rename

代码语言:javascript
运行
复制
d = {0:'bar', 1:'baz', 2:'foo'}
N = 2
df1 = df.groupby(np.arange(len(df.columns)) // N, axis=1).mean().rename(columns=d)
print (df1)
   bar  baz   foo
0  1.5  3.5   5.5
1  7.5  9.5  11.5

对于使用大写字母生成的列名的更通用解决方案,请使用:

代码语言:javascript
运行
复制
import string
d = dict(enumerate(string.ascii_uppercase))

N = 2
df1 = df.groupby(np.arange(len(df.columns)) // N, axis=1).mean().rename(columns=d)
print (df1)
     A    B     C
0  1.5  3.5   5.5
1  7.5  9.5  11.5
票数 5
EN

Stack Overflow用户

发布于 2020-01-29 14:58:33

我要做splitnumpy

代码语言:javascript
运行
复制
pd.concat([x.mean(1)for x in np.split(df, [3], axis=1)],1)
     0     1
0  2.0   5.0
1  8.0  11.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59969720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档