gpt4 book ai didi

python - Pandas.DataFrame.resample 出现意外结果

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

我的 2017 年 1 月数据集结构如下例所示。

Date    ProductID   ProductType Qty
1.1.2017 1000 101 7
1.1.2017 1001 111 2
1.1.2017 1000 101 1
1.1.2017 1004 107 12
2.1.2017 1000 101 6
2.1.2017 1001 111 5
2.1.2017 1001 111 4
…..
31.1.2017 1000 101 7
31.1.2017 1001 111 5
31.1.2017 1001 111 7

我想计算产品类型为 101 和 111 的每个产品 ID 的每周销售额,结果如下所示

ProductID|  WeeklyDates|    Sales
1000 | 1.1.2017 | 14
| 1.8.2017 | NaN
| 1.15.2017 | NaN
| 1.22.2017 | NaN
| 1.29.2017 | 7
-----------------------------------
1001 | 1.1.2017 | 11
| 1.8.2017 | NaN
| 1.15.2017 | NaN
| 1.22.2017 | NaN
| 1.29.2017 | 12

这里 NaN 意味着我没有示例中这些日期的数据。现在为了获得这些结果,我使用以下代码

import pandas as pd

df = pd.read_csv('data.csv', encoding = 'latin-1', sep=',')
df['Date'] = pd.to_datetime(df['Date'])
transaction_types = [101, 111]
s_df = df[df['ProductType'].isin(transaction_types)]
res_df = s_df.filter(['Date','ProductID','Qty']) # filter it because I do not want other product type column now
res_df = res_df.set_index('Date').groupby('ProductID').resample('W').sum()
res_df.to_csv('result.csv', sep=';', encoding='latin-1')

它返回了一些奇怪的结果。我得到了一些数据中甚至没有的日期。我只显示一个 ID 的结果

ProductID|  Date        |ProductID| Qty
1000 | 01/01/2017 | 4000 | 41
1000 | 08/01/2017 | |
1000 | 15/01/2017 | 33000 | 54
1000 | 22/01/2017 | 87000 | 313
1000 | 29/01/2017 | 79000 | 94
1000 | 05/02/2017 | 36000 | 413
1000 | 12/02/2017 | |
1000 | 19/02/2017 | |
1000 | 26/02/2017 | |
1000 | 05/03/2017 | 8000 | 78

结果是原始结果,与上面的示例不符。但是 ProductID 出现了 2 次,我认为它也对 ProductID 进行了求和。而且总和也不正确。日期也一直持续到三月,在我的数据集中,我只有一月的日期。有人可以指导我的代码中可能存在问题的地方吗?谢谢

最佳答案

我没有给出任何日期格式。例如

df['Date'] = pd.to_datetime(df['Date']) # Not correct
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y') # Correct way

因此,它会将月视为天,反之亦然,这就是我得到错误结果的原因。

关于python - Pandas.DataFrame.resample 出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43319909/

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