簡體   English   中英

我如何根據其他 5 列的觀察結果對 pandas dataframe 進行采樣

[英]How do I sample a pandas dataframe based on observations from 5 other columns

我有一個 dataframe 的每日銷售額,為期五年,涉及 658 種不同的商品。

每個項目都是它自己獨特的產品層次結構的一部分。 所以,眼線是以下的一部分:

  1. 美麗
  2. 顏色 COLLECTIONS COLLECTIONS-EYE
  3. 眼睛的顏色
  4. 藝術性
  5. 標志性顏色

每個產品都有自己的層次結構路徑。 也就是說,我想從層次結構的所有路徑中抽取五種產品,然后使用這些項目過濾掉我的 dataframe。

我正在考慮將每個項目的層次結構的另一列連接在一起,這樣我就有一個列來對項目進行分組。 我不確定從那里到 go 的位置。

python有沒有辦法做到這一點?

正如 RJ 提到的那樣,我發現了這一點:

import random
df['hierarchy_group'] = df['GLBL_BUS_LN_DESC']+"_"+df['GLBL_CTGRY_DESC']+"_"+df['GLBL_SUB_CTGRY_DESC']+"_"+df['GLBL_PRDCT_IND_CUT_DESC']+"_"+df['GLBL_BRAND_DESC']+"_"+df['GLBL_SUB_BRAND_DESC']
h_count = df.groupby(['hierarchy_group']).agg({'ITEM_ROOT':'nunique'}).reset_index().sort_values('ITEM_ROOT')
h_dict = dict(zip(h_count['hierarchy_group'], h_count['ITEM_ROOT']))
h_groups = list(df['hierarchy_group'].unique())
samples = []
for k, v in h_dict.items():
    df_ = df.copy()
    df_ = df_[df_['hierarchy_group']==k]
    item_list = list(df_['ITEM_ROOT'].unique())
    sample_list = random.sample(item_list,1)
    for i in sample_list:
        samples.append(i)

我敢肯定有一種更簡潔的方法可以完成此操作,但它似乎有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM