将Pandas系列转换并分配给数据帧以创建CSV

时间:2018-01-13 04:29:44

标签: python pandas

我已经获得了内部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

是否可以简单地“转换”'我的数据进入了理想的结构?

1 个答案:

答案 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")
  • 第一行过滤到您想要的SKU
  • 第二行执行groupby并计算每个sku每月的销售数量
  • 下一行将数据框从多索引更改为您想要的格式
  • 导出到csv