当前位置: 首页 > 面试题库 >

在pandas中按周分组

严信瑞
2023-03-14
问题内容

我有这个数据框:

Name   Date    Quantity
Apple  07/11/17  20
orange 07/14/17  20
Apple  07/14/17  70
Orange 07/25/17  40
Apple  07/20/17  30

我想按名称和日期进行汇总以获取数量总和。详细信息:

日期 :组,结果应在星期初(或仅在星期一)

数量 :两个或多个记录具有相同的名称和日期(如果属于相同间隔)的总和

所需的输出如下:

Name   Date    Quantity
Apple  07/10/17  90
orange 07/10/17  20
Apple  07/17/17  30
orange 07/24/17  40

提前致谢


问题答案:

首先转换列date to_datetime并减去一个星期,因为我们要对日期之前一周进行累加,而不是该日期之前一周。

然后通过W-MON使用groupbywith并进行聚合:Groupersum

df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity']
       .sum()
       .reset_index()
       .sort_values('Date')
print (df)
     Name       Date  Quantity
0   Apple 2017-07-10        90
3  orange 2017-07-10        20
1   Apple 2017-07-17        30
2  Orange 2017-07-24        40


 类似资料:
  • 问题内容: Oracle的表服务器提供了一个内置功能。此功能将任何时间戳转换为前一个星期日的午夜。在MySQL中执行此操作的最佳方法是什么? Oracle还提供将时间戳转换为发生该月的第一天的午夜。在MySQL中,这很简单: 但是这个技巧将在数周内失效。我知道此功能,但是我真的不想要一年内的星期数。这些东西是用于多年的工作。 问题答案: 想通了…有点麻烦,但这就是。 而且,如果您的业务规则说您的工

  • 上面是我的数组,我想将日期按周分组,这样我就可以在报告中正确地显示它们。所以会是这样的:

  • 问题内容: 我有一个这样的数据框: 我想计算每个集群每个组织的平均时间。 预期结果: 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 问题答案: 如果你想先对组合取平均值,然后再对cluster组取平均值 如果你不仅仅希望价值观,那么你可以 你可以groupby上再取

  • 问题内容: 我有一个用例,其中: 数据的格式为:Col1,Col2,Col3和时间戳。 现在,我只想获取行数与时间戳箱的数量。 也就是说,对于每半小时的存储桶(甚至没有对应行的存储桶),我需要计算有多少行。 时间戳记分布在一年内,因此我无法将其划分为24个存储桶。 我必须每隔30分钟将它们装箱。 问题答案: 通过

  • 问题内容: 我想在df列中获取特定值的百分比。假设我有一个(fol,col2,col3,性别)的df性别列,其值是M或F。我想获取df中M和F值的百分比。 我已经尝试过了,这给了我M和F实例的数量,但是我想要这些作为df中值总数的百分比。 有人可以帮忙吗? 问题答案: 使用有:

  • 在Loc vs. iloc vs. ix vs. at vs. iat的答案中选择?例如。 现在我想要所有的栏目,除了“食物”和“高度”。 我认为类似于的东西可以工作,但是Python返回。 我知道有一种解决方法:。然而,在我的现实生活中,我有数百列要删除。键入所有列名是如此低效。 我期待类似于R语言中的或。 还阅读了选择/排除Pandas中的列集。