gpt4 book ai didi

python - 按日期对数据框进行分组

转载 作者:行者123 更新时间:2023-12-01 03:11:26 25 4
gpt4 key购买 nike

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

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

知道如何解决这个问题吗?

谢谢大家!

最佳答案

您可以使用 strftime 创建的 Seriesgroupby和列 Type 并通过 dictsuper solution of BrenBarn 聚合 maxmin ,最后为 dfmaxdfmin boolean indexing :

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

关于python - 按日期对数据框进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42866404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com