使用Pandas Groupby和多行

时间:2015-02-20 18:15:01

标签: python pandas

我到处搜索过,尽我所能但却能从我的数据中得到我想要的东西。

背景

我有一组从发票数据中获得的数据。我已经按摩了这些数据,以达到我有一个由六列组成的pandas数据帧的程度。这些列(以及示例数据如下):

  • Project_ID - 项目的ID
  • Project_Type - 项目中执行的工作的事项类型。
  • 创建日期 - 项目的创建日期(项目启动时)
  • 发票日期 - 为
  • 生成发票的日期
  • 项目年龄 - 每张发票的年龄(根据项目开始日期计算)

可以在this CSV file中找到数据样本。

每个项目都可以有多个发票,这就是造成我的问题的原因。

我想做什么:

按项目类型汇总并获得"年龄"的最小值,最大值,平均值和标准值。对于每个项目类型。我认为这将是一个使用Project_Type列的简单组,但我不能使min,max,mean,std函数适用于该groupby。

我确定这是一个简单的问题,但我发现的任何内容都没有为我解决。

任何帮助或指示赞赏。

数据样本:

Project_ID  Project_Type    Create_Date     Invoice_Dates   Age
25098       Computers       1/11/12 0:00    2/6/12 0:00     26 days 
25098       Computers       1/11/12 0:00    2/29/12 0:00    49 days 
25113       Telecom         1/12/12 0:00    4/30/12 0:00    109 days 
25113       Telecom         1/12/12 0:00    6/30/12 0:00    170 days 

1 个答案:

答案 0 :(得分:2)

Eric,我没有下载你的文件,但是我对它进行了调查。我会在你的问题中发布前几行,所以我们不必下载它。

是的,groupby()将是一个很好的方式。您可以在像

这样的列表中指定agg函数
df[['Project_Type','Project Age']].groupby('Project_Type').agg(['min',
                                                            'max',
                                                            'mean',
                                                            'std'])