按日期对数据框进行分组

时间:2017-03-17 20:15:42

标签: python pandas dataframe

我有一个数据框,其中包含多个日期和两种类型的值最大值和最小值,当然还有值的数量或数量,它看起来像这样。

Date       Type      Quantity
2008-01-01   Max        100
2008-01-01   Max        105
2008-01-01   Min        80
2008-01-01   Min        75
2009-01-01   Max        101
2009-01-01   Max        106

我正在尝试对这个数据框进行分组(我不确定分组是否是正确的术语),按日和月(我想获得所有年份的最大和最小每日价值)并将其除以2系列最大值和最小值,因此最终结果将如下所示。 我已经消除了诸如闰年2-29之类的日期,所以这是有道理的。

Date       Type      Quantity
01-01       Max        106
01-02       Max        107
01-03       Max        104



Date       Type      Quantity
01-01       Min        75
01-02       Min        72
01-03       Min        74

关于如何解决这个问题的任何想法?

感谢大家!

1 个答案:

答案 0 :(得分:2)

您可以使用groupby Series创建的Typemax列,min汇总dictdfmax dfmin使用strftime,最后为print (df) Date Type Quantity 0 2008-01-01 Max 100 1 2008-01-02 Max 105 2 2008-01-01 Min 80 3 2008-01-01 Min 75 4 2009-01-02 Max 101 5 2009-01-01 Max 106 print (df.Date.dt.strftime('%m-%d')) 0 01-01 1 01-02 2 01-01 3 01-01 4 01-02 5 01-01 Name: Date, dtype: object func_map = {'Min': min, 'Max': max} df1 = df.groupby([df.Date.dt.strftime('%m-%d'), 'Type'])['Quantity'] .apply(lambda g: func_map[g.name[1]](g)) .reset_index() print (df1) Date Type Quantity 0 01-01 Max 106 1 01-01 Min 75 2 01-02 Max 105 mask = df1.Type == 'Max' dfmax = df1[mask] print (dfmax) Date Type Quantity 0 01-01 Max 106 2 01-02 Max 105 dfmin = df1[~mask] print (dfmin) Date Type Quantity 1 01-01 Min 75 super solution of BrenBarn

function sheetNameReturn(e) {
  Logger.log(e.changeType)
  Logger.log('sheetName ran')

  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
sheetNameReturn