2016-03-15 154 views
4

我想統計每個值出現在數據幀中的次數。pandas DataFrame列中值的計數頻率

這裏是我的數據框 - df

status 
1  N 
2  N 
3  C 
4  N 
5  S 
6  N 
7  N 
8  S 
9  N 
10 N 
11 N 
12 S 
13 N 
14 C 
15 N 
16 N 
17 N 
18 N 
19 S 
20 N 

我想計數的詞典:

前。 counts = {N: 14, C:2, S:4}

我試過df['status']['N']但它給keyErrordf['status'].value_counts但沒有用。

回答

16

您可以使用value_countsto_dict

print df['status'].value_counts() 
N 14 
S  4 
C  2 
Name: status, dtype: int64 

counts = df['status'].value_counts().to_dict() 
print counts 
{'S': 4, 'C': 2, 'N': 14} 
1

你能將df轉換成列表嗎?

如果是這樣的:

a = ['a', 'a', 'a', 'b', 'b', 'c'] 
c = dict() 
for i in set(a): 
    c[i] = a.count(i) 

使用字典理解:

c = {i: a.count(i) for i in set(a)} 
4

替代一個襯墊用哀兵Counter

In [3]: from collections import Counter 

In [4]: dict(Counter(df.status)) 
Out[4]: {'C': 2, 'N': 14, 'S': 4} 
4

你可以試試這個方法。

df.stack().value_counts().to_dict()