也许我错过了显而易见的事情。
我有一个 Pandas 数据框,如下所示:
id product categories
0 Silmarillion ['Book', 'Fantasy']
1 Headphones ['Electronic', 'Material']
2 Dune ['Book', 'Sci-Fi']
我想使用 groupby 函数来计算类别列中每个元素的出现次数,所以这里的结果是
Book 2
Fantasy 1
Electronic 1
Material 1
Sci-Fi 1
然而,当我尝试使用 groupby 函数时,pandas 会计算整个列表的出现次数,而不是分隔其元素。我尝试了多种不同的方法来处理这个问题,使用元组或拆分,但到目前为止我还没有成功。
您也可以致电pd.value_counts
直接在列表上。
您可以通过以下方式生成适当的列表numpy.concatenate
, itertools.chain
, or cytoolz.concat
from cytoolz import concat
from itertools import chain
cytoolz.concat
pd.value_counts(list(concat(df.categories.values.tolist())))
itertools.chain
pd.value_counts(list(chain(*df.categories.values.tolist())))
numpy.unique
+ numpy.concatenate
u, c = np.unique(np.concatenate(df.categories.values), return_counts=True)
pd.Series(c, u)
全部产量
Book 2
Electronic 1
Fantasy 1
Material 1
Sci-Fi 1
dtype: int64
时间测试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)