Python Pandas:计算系列中元素出现的次数

zor*_*ork 2 python pandas

如何查找系列元素计数?使用此代码:

import pandas as pd

d = { 'x' : [1,2,2,2,3,4,5,5,7] }
df = pd.DataFrame(d)
cnt1 = len(df[df.x == 1])
cnt2 = len(df[df.x == 2])
cnt3 = len(df[df.x == 3])
...
Run Code Online (Sandbox Code Playgroud)

没有多大帮助。有没有什么方法可以计算元素出现的次数,因此结果将是一个带有“元素,计数”对的字典,如下所示:

cnts = {'1':1, '2': 3, '3':1, ...}
Run Code Online (Sandbox Code Playgroud)

或者在其他一些易于查找和迭代的结构中?

ayh*_*han 9

您可以使用value_counts。它返回一个可以像字典一样查找的系列,并且您可以迭代它:

df['x'].value_counts(sort=False)
Out: 
1    1
2    3
3    1
4    1
5    2
7    1
Name: x, dtype: int64
Run Code Online (Sandbox Code Playgroud)

如果需要,您也可以将其转换为字典:

df['x'].value_counts().to_dict()
Out: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}
Run Code Online (Sandbox Code Playgroud)