【问题标题】:Pandas unable to filter rows by quarter in specific year熊猫无法在特定年份按季度过滤行
【发布时间】:2020-08-20 01:36:38
【问题描述】:

我有一个如下所示的数据集-

  Store   Date     Weekly_Sales         
0   1   2010-05-02  1643690.90  
1   1   2010-12-02  1641957.44  
2   1   2010-02-19  1611968.17  
3   1   2010-02-26  1409727.59  
4   1   2010-05-03  1554806.68

它总共有 100 家商店。我想按季度过滤 2012 年的数据

# Filter out only the data in 2012 from the dataset

import datetime as dt
df['Date'] = pd.to_datetime(df['Date'])
ds_2012 = df[df['Date'].dt.year == 2012]

# Calculate Q on the dataset
ds_2012 = ds_2012.sort_values(['Date'],ascending=True)
quarterly_sales = ds_2012.groupby(['Store', pd.Grouper(key='Date', freq='Q')])['Weekly_Sales'].sum()
quarterly_sales.head(20)

收到输出

Store     Date      
1      2012-03-31    18951097.69
       2012-06-30    21036965.58
       2012-09-30    18633209.98
       2012-12-31     9580784.77

在 Excel 中过滤时,Q2(2012-06-30) 和 Q3(2012-09-30) 的总和都不正确。我是熊猫的新手

【问题讨论】:

  • 您能解释一下您的代码并提供答案吗?尽管您没有按商店分组,但它不起作用
  • 也请分享源数据
  • 我已经分享了源数据的上图。要我分享excel文件吗?
  • 不,数据本身,只有几行。你可以做df.to_dict('records') 并分享它。这个link应该指导你如何去做
  • 另外,请分享您的预期输出。数据也是如此,不是图片

标签: python pandas dataframe data-science


【解决方案1】:

你可以groupbystoreresampleDataFrame季度:

import pandas as pd
df=pd.concat([pd.DataFrame({'Store':[i]*12, 'Date':pd.date_range(start='2020-01-01', periods=12, freq='M'), 'Sales':list(range(12))}) for i in [1,2]])
df.groupby('Store').resample('Q', on='Date').sum().drop('Store', axis=1)

                  Sales
Store Date             
1     2020-03-31      3
      2020-06-30     12
      2020-09-30     21
      2020-12-31     30
2     2020-03-31      3
      2020-06-30     12
      2020-09-30     21
      2020-12-31     30

也可以查看groupby and resample docs

【讨论】:

  • 我没有得到解决方案中提到的输出,请使用我的数据集并提供解决方案。我得到的输出与您显示的相同,但我需要总结每周销售额。
  • 请提供预期的输出。它完全不清楚你想要实现什么。每周的销售额可以这样总结。并且最好扩展您的示例数据
  • 您提供的输出是正确的,但我也得到了 3、12、21、30,而不是我上面提供的商店销售额。我是新手,所以我不知道如何使用您的解决方案
  • 你得到我要找的东西了吗?
  • 只需使用您的数据框,而不是我创建的示例
猜你喜欢
  • 1970-01-01
  • 2018-04-03
  • 2022-10-07
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多