我有一个数据框,其中包含多个日期和两种类型的值最大值和最小值,当然还有值的数量或数量,它看起来像这样。
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
关于如何解决这个问题的任何想法?
感谢大家!
答案 0 :(得分:2)
您可以使用groupby
Series
创建的Type
和max
列,min
汇总dict
和dfmax
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