我已经获得了内部SKU的订单数据,并希望了解过去3年内每月购买SKU的频率。
for row in df_skus.iterrows():
df_filtered = df_orders.loc[df_orders['item_sku'] == row[1]['sku']]
# Remove unwanted rows:
df_filtered = df_filtered[['txn_id', 'date', 'item_sku']].copy()
# Group by year and date:
df_result = df_filtered['date'].groupby([df_filtered.date.dt.year, df_filtered.date.dt.month]).agg('count')
print ( df_result )
print ( type ( df_result ) )
到目前为止(缩短的)结果看起来很好:
日期日期
2017 3 1
名称:日期,dtype:int64
日期日期
2017 2 1
3 6
4 1
6 1
名称:日期,dtype:int64
现在,我想创建一个看起来像这样的CSV:
SKU 2017-01 2017-02 2017-03
17 0 0 1
18 0 1 3
是否可以简单地“转换”'我的数据进入了理想的结构?
答案 0 :(得分:2)
我一直在做这些计算,这似乎是最快的。
import pandas as pd
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)
monthly_sales.to_csv("my_csv.csv")