【发布时间】:2020-10-16 16:49:32
【问题描述】:
我有一个时间序列数据集,基本上是过去 5 年的材料消耗数据
Material No Consumption Date Consumption
A 2019-06-01 1
A 2019-07-01 2
A 2019-08-01 3
A 2019-09-01 4
A 2019-10-01 0
A 2019-11-01 0
A 2019-12-01 0
A 2020-01-01 1
A 2020-02-01 2
A 2020-03-01 3
A 2020-04-01 0
A 2020-05-01 0
B 2019-06-01 0
B 2019-07-01 0
B 2019-08-01 0
B 2019-09-01 4
B 2019-10-01 0
B 2019-11-01 0
B 2019-12-01 0
B 2020-01-01 4
B 2020-02-01 2
B 2020-03-01 8
B 2020-04-01 0
B 2020-05-01 0
从上面的数据框中,我想查看材料至少消耗 1 个单位的月数。输出数据框应如下所示。
Material no_of_months(Jan2020-May2020) no_of_months(Jun2019-May2020)
A 3 7
B 3 4
目前我正在对数据框进行子设置并使用 group by 来计算具有非零消耗的唯一条目。但是,这需要为不同时期创建多个数据帧,然后将它们合并。想知道这是否可以使用字典以更好的方式完成。
consumption_jan20_may20 = consumption.loc[consumption['Consumption Date']>='2020-01-01',['Material No','Consumption Date','Consumption']]
consumption_jan20_may20 = consumption_jan20_may20.groupby([pd.Grouper(key='Material No'),grouper])['Consumption'].count().reset_index()
consumption_jan20_may20 = consumption_jan20_may20.groupby('Material No').count().reset_index()
consumption_jan20_may20.columns = ['Material No','no_of_months(Jan2020-May2020)','dummy']
consumption_jan20_may20 = consumption_jan20_may20[['MATNR','no_of_months(Jan2020-May2020)']]
【问题讨论】:
-
你尝试了什么?
-
你能解释一下你是如何得出预期输出的吗?
-
目前我正在对数据框进行子设置并使用 groupby 来计算具有非零消耗的唯一条目。但是,这需要为不同时期创建多个数据帧,然后将它们合并。想知道这是否可以使用字典以更好的方式完成。
-
您所遵循的方法似乎很合适。在某些时候,您将不得不根据您想要的日期拆分您的数据框。您可以手动执行此操作,也可以通过循环运行来实现。如果您的日期不超过 5-6 个间隔,我建议您手动运行并在最后连接所有 dfs。
标签: python pandas dataframe time-series