首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将熊猫群应用到数据中,以便在计算平均值时同时使用行和列

如何将熊猫群应用到数据中,以便在计算平均值时同时使用行和列
EN

Stack Overflow用户
提问于 2022-07-17 02:53:44
回答 2查看 45关注 0票数 0

我有一个格式的dataframe df:

代码语言:javascript
复制
     Grade   Height    Speed   Value
 0     A       13      0.1     500
 1     B       25      0.3     100
 2     C       54      0.6     200

我想把它分组,这样我把等级作为指数,高度(分裂成桶)作为列,在单个单元格内有等级和高度组合的平均值。

因此,输出数据将如下所示:

代码语言:javascript
复制
                           Height  
Grade  0-10          10-25         25-50      50-100
 A   avg(speed*value)   x            x          x
 B      x               x            x          x
 C      x               x            x          x

其中x是计算出的平均速度*值。

我尝试过这样的方法,但没有成功:

代码语言:javascript
复制
output = pd.DataFrame(data=df, index = df[df['Grade']], columns = df[df['Height']].groupby(pd.qcut(df['Height'], 3, duplicates='drop'))).groupby(df['Value')).mean()

但是,我不太清楚哪种方法可能有效,不会抛出错误或空的df。

你有什么想法我可以试试吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-17 03:38:49

Speed * Value

  • Pivot

  • 使用pd.cutHeight列分解为回收箱。

  • 为表创建了一个新列,mean是默认的支点函数。使用
  • dropna=False使即使空回收箱也是shown.

代码语言:javascript
复制
df.Height = pd.cut(df.Height, bins=[0, 10, 25, 50, 100])
df['speed_value'] = df.Speed.mul(df.Value)
out = df.pivot_table(index='Grade', columns='Height', values='speed_value', dropna=False)
print(out)

输出:

代码语言:javascript
复制
Height  (0, 10]  (10, 25]  (25, 50]  (50, 100]
Grade
A           NaN      50.0       NaN        NaN
B           NaN      30.0       NaN        NaN
C           NaN       NaN       NaN      120.0
票数 2
EN

Stack Overflow用户

发布于 2022-07-17 04:05:42

使用:

代码语言:javascript
复制
df['agg'] = pd.cut(df['Height'].astype(int), [0,10,25,50,100])
s = df.pivot_table(index='Grade', columns='agg', values=['Speed', 'Value'], dropna=False)
s.apply(lambda x: [x[i]*x[i+4] for i in range(4)], axis = 1).apply(pd.Series).rename(columns = {i: s.columns.get_level_values(1).categories[i] for i in range(4)})

输出:

代码语言:javascript
复制
    (0, 10] (10, 25]    (25, 50]    (50, 100]
Grade               
A   NaN 50.0    NaN NaN
B   NaN 30.0    NaN NaN
C   NaN NaN NaN 120.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73008968

复制
相关文章

相似问题

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