熊猫groupby包含不存在的日期

时间:2020-07-05 15:40:17

标签: python pandas

我正在使用e-commerce dataset,并且具有以下代码段

normal-data

与输出

data["grossprice"] = data["UnitPrice"]*data["Quantity"]
total_date = data.groupby(["CustomerID","InvoiceDate"])["grossprice"].sum()

结果发现CustomerID InvoiceDate 12747 2010-12-01 NaN 2010-12-02 NaN 2010-12-03 NaN 2010-12-05 [30.599999999999998, 15.299999999999999, 27.04... 2010-12-06 NaN CustomerID日期没有任何交易。

  1. 好像熊猫在所有客户的所有日期都在分组(不仅是观察到的),对吗?根据{{​​3}},输入NaN仅可用于对观察到的组合进行分组(如果有任何石斑鱼是分类的),这似乎解决了我的问题。我可以在没有observedCustomerID的情况下进行调用,它似乎可以正常工作。我只是在这里很幸运,还是可以像这样使用它而不会得到意想不到的结果?
InvoiceDate

1 个答案:

答案 0 :(得分:0)

我刚刚下载了您的data.csv文件,如果我运行以下代码,它将为我提供正确的输出。

import numpy as np
import pandas as pd

path = "C:/Users/Frank/Downloads/data.csv"

data = pd.read_csv(path, encoding = "ISO-8859-1")

data["grossprice"] = data["UnitPrice"]*data["Quantity"]
total_date = data.groupby(["CustomerID","InvoiceDate"])["grossprice"].sum()

print(total_date.loc[12747])

给出以下输出

InvoiceDate
1/20/2011 14:01     303.04
10/4/2011 8:26      675.38
11/17/2011 17:13    312.73
12/13/2010 10:41    347.71
12/5/2010 15:38     358.56
12/7/2011 14:34     438.50
3/1/2011 14:53      310.78
5/25/2011 9:57      328.35
5/5/2011 15:31      442.96
6/28/2011 10:06     376.30
8/22/2011 10:38     301.70
Name: grossprice, dtype: float64

这里是整个total_date

CustomerID  InvoiceDate     
12346.0     1/18/2011 10:01     77183.60
            1/18/2011 10:17    -77183.60
12347.0     1/26/2011 14:30       475.39
            10/31/2011 12:25     1294.32
            12/7/2010 14:57       711.79
                                  ...   
18283.0     7/14/2011 13:20         2.50
            9/5/2011 12:35        134.90
18287.0     10/12/2011 10:23     1001.32
            10/28/2011 9:29        70.68
            5/22/2011 10:39       765.28
Name: grossprice, Length: 22034, dtype: float64