我目前正在研究熊猫,我来自R/dplyr/tidyverse背景。
熊猫有一个不那么直观的API,我如何用熊猫语法优雅地从dplyr重写这样的操作呢?
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")
发布于 2022-09-09 14:41:34
pd.DataFrame.agg方法不允许在方法本身中更改列的名称
那不完全是真的。您实际上可以重命名agg
中的列,类似于R中的列,不过最好不要使用count
作为列名,因为它也是一个属性:
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)
)
发布于 2022-09-09 14:32:56
我们可以编写一个熊猫连接函数和方法,这些函数和方法产生相同的dataframe/tibble:
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
方法不允许在方法本身中更改列的名称。
但它是优雅的,干净的和清晰的熊猫允许我们去。
https://stackoverflow.com/questions/73668028
复制相似问题