我使用 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”?
是否可以为这些列分配标题;名称函数不适用于系列,我无法将其转换为数据框以可能以这种方式合并数据。但是, 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
那是你要的吗:
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评论
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)