我有一些想要分析的订单数据。
目前感兴趣的是:哪个 SKU 在哪个月被购买的频率是多少?
这是一个小例子:
import datetime
import pandas as pd
import numpy as np
d = {'sku': ['RT-17']}
df_skus = pd.DataFrame(data=d)
print(df_skus)
d = {'date': ['2017/02/17', '2017/03/17', '2017/04/17', '2017/04/18', '2017/05/02'], 'item_sku': ['HT25', 'RT-17', 'HH30', 'RT-17', 'RT-19']}
df_orders = pd.DataFrame(data=d)
print(df_orders)
for i in df_orders.index:
print("\n toll")
df_orders.loc[i,'date']=pd.to_datetime(df_orders.loc[i, 'date'])
df_orders = df_orders[df_orders["item_sku"].isin(df_skus["sku"])]
monthly_sales = df_orders.groupby(["item_sku", pd.Grouper(key="date",freq="M")]).size()
monthly_sales = monthly_sales.unstack(0)
print(monthly_sales)
这工作正常,但如果我使用我的真实订单数据(来自 CSV),几分钟后我会得到:
类型错误:仅对 DatetimeIndex、TimedeltaIndex 或 periodIndex 有效,但获得了“Int64Index”的实例
这个问题来自于这一行:
Monthly_sales = df_orders.groupby(["item_sku", pd.Grouper(key="date",freq="M")]).size()
是否可以跳过该错误?
我尝试了 try except 块:
try:
monthly_sales = df_orders.groupby(["item_sku", pd.Grouper(key="date",freq="M")]).size()
monthly_sales = monthly_sales.unstack(0)
except:
print "\n Here seems to be one issue"
然后我得到打印(monthly_sales)
空数据框
列:[txn_id、日期、item_sku、数量]
指数: []
那么我的数据中的某些内容似乎清空或破坏了分组?
如何“清理”我的数据?
或者,如果我可以“跳过”错误,我什至可以随意丢失销售数据,这可能吗?