首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我将如何分组,总结和过滤熊猫的dplyr-时尚?

我将如何分组,总结和过滤熊猫的dplyr-时尚?
EN

Stack Overflow用户
提问于 2022-09-09 22:32:56
回答 2查看 75关注 0票数 5

我目前正在研究熊猫,我来自R/dplyr/tidyverse背景。

熊猫有一个不那么直观的API,我如何用熊猫语法优雅地从dplyr重写这样的操作呢?

代码语言:javascript
运行
复制
library("nycflights13")
library("tidyverse")

delays <- flights %>%
  group_by(dest) %>%
  summarize(
    count = n(),
    dist = mean(distance, na.rm = TRUE),
    delay = mean(arr_delay, na.rm = TRUE)
  ) %>%
  filter(count > 20, dest != "HNL")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-09 22:41:34

pd.DataFrame.agg方法不允许在方法本身中更改列的名称

那不完全是真的。您实际上可以重命名agg中的列,类似于R中的列,不过最好不要使用count作为列名,因为它也是一个属性:

代码语言:javascript
运行
复制
    delays = (
    flights
    .groupby('dest', as_index=False)
    .agg(
        count=('year', 'count'),
        dist=('distance', 'mean'),
        delay=('arr_delay', 'mean'))
    .query('count > 20 & dest != "HNL"')
    .reset_index(drop=True)
)
票数 5
EN

Stack Overflow用户

发布于 2022-09-09 22:32:56

我们可以编写一个熊猫连接函数和方法,这些函数和方法产生相同的dataframe/tibble:

代码语言:javascript
运行
复制
delays = (
    flights
    .groupby('dest', as_index=False)
    .agg({
        'year': 'count',
        'distance': 'mean',
        'arr_delay': 'mean',
    })
    .rename(columns={
        'year': 'count',
        'distance': 'dist',
        'arr_delay': 'delay',
    })
    .query('count > 20 & dest != "HNL"')
    .reset_index(drop=True)
)

更长的是:熊猫的pd.DataFrame.agg方法不允许在方法本身中更改列的名称。

但它是优雅的,干净的和清晰的熊猫允许我们去。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73668028

复制
相关文章

相似问题

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