如何将 pandas value_counts() 合并到数据框或使用它来对数据框进行子集化

新手上路,请多包涵

我使用 pandas df.value_counts() 来查找特定品牌的出现次数。我想将这些价值计数与初始数据框中的各个品牌合并。

  df has many columns including one named 'brands'
 brands = df.brands.value_counts()

 brand1   143
 brand2   21
 brand3   101
 etc.

如何将价值计数与原始数据框合并,以便每个品牌的相应计数都在一个新列中,比如“brand_count”?

是否可以为这些列分配标题; names 函数不适用于系列,我无法将其转换为数据框以可能以这种方式合并数据。但是,value_counts 输出一系列 dtype int64(品牌名称应为字符串类型),这意味着我不能执行以下操作:

  df2 = pd.DataFrame({'brands': list(brands_all[0]), "brand_count":
 list(brands_all[1])})
 (merge with df)

最终,我想获得这个:

  col1  col2  col3  brands  brand_count ... col150
                   A        30
                   C        140
                   A        30
                   B        111

原文由 user2476665 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 567
1 个回答

那是你要的吗:

 import numpy as np
import pandas as pd

# generating random DataFrame
brands_list = ['brand{}'.format(i) for i in range(10)]
a = pd.DataFrame({'brands': np.random.choice(brands_list, 100)})
b = pd.DataFrame(np.random.randint(0,10,size=(100, 3)), columns=list('ABC'))
df = pd.concat([a, b], axis=1)
print(df.head())

# generate 'brands' DF
brands = pd.DataFrame(df.brands.value_counts().reset_index())
brands.columns = ['brands', 'count']
print(brands)

# merge 'df' & 'brands_count'
merged = pd.merge(df, brands, on='brands')
print(merged)

PS 第一个重要部分只是数据帧生成。

您感兴趣的部分从 # generate 'brands' DF 评论开始

原文由 MaxU - stop russian terror 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题