Python 如何从多值列中计算最常用的值
我有这样一个问题: 我有一个带有店铺ID和店铺阴极的熊猫数据框,看起来像这样:Python 如何从多值列中计算最常用的值,python,pandas,Python,Pandas,我有这样一个问题: 我有一个带有店铺ID和店铺阴极的熊猫数据框,看起来像这样: id cats 0 10002718 182,45001,83079 1 10004056 9798 2 10009726 17,45528 3 10009752 64324,17 4 1001107 44607,83520,76557 ... ... ... 24922 9992184
id cats
0 10002718 182,45001,83079
1 10004056 9798
2 10009726 17,45528
3 10009752 64324,17
4 1001107 44607,83520,76557
... ... ...
24922 9992184 45716
24923 9997866 77063
24924 9998461 45001,44605,3238,72627,83785
24925 9998954 69908,78574,77890
24926 9999728 45653,44605,83648,85023,84481,68822
所以问题是每个商店可以有多个阴极,任务是计算每个阴极的频率。最简单的方法是什么
总之,我需要有带有列的dataframe
cats count
0 1 133
1 2 1
2 3 15
3 4 12
与和一起使用:
或者将expand=True
添加到split
到DataFrame
并:
您还可以懒洋洋地获取虚拟对象并对其进行汇总:
df['cats'].str.get_dummies(',').sum().reset_index()
,如果数据不是很大的话。
df1 = (df['cats'].str.split(',')
.explode()
.value_counts()
.rename_axis('cats')
.reset_index(name='count'))
df1 = (df['cats'].str.split(',', expand=True)
.stack()
.value_counts()
.rename_axis('cats')
.reset_index(name='count'))
print (df1.head(10))
cats count
0 17 2
1 44605 2
2 45001 2
3 83520 1
4 64324 1
5 44607 1
6 45653 1
7 69908 1
8 83785 1
9 83079 1