大Pandas中的Groupby和过滤

2024-09-29 02:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

对于这样的数据帧:

    mpg    yr    name
0   18     70    chevrolet malibu
1   15     70    buick skylark
2   18     70    ford torino
3   16     70    chevrolet el camino
4   17     71    chevrolet chevelle

我可以像这样得到平均每加仑汽油:

^{pr2}$

我试着用以下方法来计算雪佛兰的年平均每加仑汽油:

auto.groupby(['yr', auto['name'].str.contains('chevrolet')])['mpg'].mean()

但是,它会创建一个额外的True/False布尔列,如这样,其中False是非Chevrolet,True是Chevrolet:

yr    name    
70    False   16.5
      True    17.0
71    False   NaN
      True    17.0

我要找的是:

yr    mpg
x     y

你能不能请你A)解释一下为什么我的尝试没有成功,B)帮助纠正我的错误,并解释为什么需要这样做。 谢谢您!在


Tags: 数据namefalsetrueautoyrfordmpg
1条回答
网友
1楼 · 发布于 2024-09-29 02:19:18

我们应该在groupby之前过滤

auto[auto['name'].str.contains('chevrolet')].groupby('yr')['mpg'].mean()
Out[226]: 
yr
70    17
71    17
Name: mpg, dtype: int64

您的方法用[True,False]创建另一个groupby键,然后pandas将按它和列yr分组

编辑:

你可以认为这就是你的数据帧的样子

^{pr2}$

相关问题 更多 >