繁体   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