Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从多值列中计算最常用的值_Python_Pandas - Fatal编程技术网

Python 如何从多值列中计算最常用的值

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和店铺阴极的熊猫数据框,看起来像这样:

        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