python - Pandas 中的分组和过滤

标签 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

我可以像这样得到每年的平均 MPG:

auto.groupby('yr')['mpg'].mean()

我尝试了以下方法来获取雪佛兰每年的平均 MPG:

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

但是,它会创建一个额外的 True/False bool 列,如下所示,其中 False 是非雪佛兰,True 是雪佛兰:

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

我正在寻找的是:

yr    mpg
x     y

您能否 A) 解释为什么我的尝试不起作用,B) 帮助纠正我的错误并解释为什么需要这样做。 谢谢!

最佳答案

我们应该在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

编辑:

您可以认为这就是您的数据框的样子

auto['yourkey']=auto['name'].str.contains('chevrolet')
auto
Out[228]: 
   mpg  yr               name  yourkey
0   18  70    chevroletmalibu     True
1   15  70       buickskylark    False
2   18  70         fordtorino    False
3   16  70  chevroletelcamino     True
4   17  71  chevroletchevelle     True

关于python - Pandas 中的分组和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479980/

相关文章:

python - 尽管有值,ManyToMany 字段仍返回 None

python - Pybrain前馈神经网络训练错误完全卡住

python - 基于列合并重复项?

python - 在 Anaconda 中安装 geopandas :"A GDAL API version must be specified "时出错

python - 带有 python 的 tkinter 中的默认输入字段

python - 如何将内容处置 header 设置为文件部分的附件?

python - 如何在字典中查找匹配项

python - 安装 Pylab/Matplotlib

python - 如何在 PyOpenCL 中覆盖数组元素

python - 有关 “Ignoring visible gpu device and Adding visible gpu device”的问题