gpt4 book ai didi

python - Pandas 数据框中列表中的元素计数

转载 作者:太空狗 更新时间:2023-10-29 23:56:59 25 4
gpt4 key购买 nike

当列表位于 pandas 数据框列中时,我需要获取列表中每个元素的频率

在数据中:

din=pd.DataFrame({'x':[['a','b','c'],['a','e','d', 'c']]})`

x
0 [a, b, c]
1 [a, e, d, c]

期望的输出:

   f  x
0 2 a
1 1 b
2 2 c
3 1 d
4 1 e

我可以将列表扩展成行,然后执行分组依据,但此数据可能很大(超过百万条记录)并且想知道是否有更有效/直接的方法。

谢谢

最佳答案

第一个flatten list 的值,然后按 value_counts 计数或 size计数器:

a = pd.Series([item for sublist in din.x for item in sublist])

或者:

a = pd.Series(np.concatenate(din.x))

df = a.value_counts().sort_index().rename_axis('x').reset_index(name='f')

或者:

df = a.groupby(a).size().rename_axis('x').reset_index(name='f')

from collections import Counter
from itertools import chain

df = pd.Series(Counter(chain(*din.x))).sort_index().rename_axis('x').reset_index(name='f')

print (df)
x f
0 a 2
1 b 1
2 c 2
3 d 1
4 e 1

关于python - Pandas 数据框中列表中的元素计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48707117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com