2017-05-28 39 views
0

我有一個DataFrame,我希望將組名和相應的組計數作爲列表或numpy數組。然而,當我將輸出轉換爲矩陣時,我只能得到組數,我不知道名稱。就像下面的例子:Python Pandas:獲取dataframe.value_counts()結果作爲列表

df = pd.DataFrame({'a':[0.5, 0.4, 5 , 0.4, 0.5, 0.6 ]}) 
    b = df['a'].value_counts() 
    print(b) 

輸出:

[0.4 2 
0.5 2 
0.6 1 
5.0 1 
Name: a, dtype: int64] 

是我的嘗試是print[b.as_matrix()]。輸出:

[array([2, 2, 1, 1])] 

在這種情況下,我沒有相應的組名也是我需要的信息。謝謝。

回答

1

將其轉換爲dict

bd = dict(b) 
print(bd) 
# {0.40000000000000002: 2, 0.5: 2, 0.59999999999999998: 1, 5.0: 1} 

不要擔心長期小數。它們只是浮點表示的結果;你仍然可以得到你所期望的字典。

bd[0.4] 
# 2 
1

一種方法與np.unique -

np.c_[np.unique(df.a, return_counts=1)] 

採樣運行 -

In [270]: df 
Out[270]: 
    a 
0 0.5 
1 0.4 
2 5.0 
3 0.4 
4 0.5 
5 0.6 

In [271]: np.c_[np.unique(df.a, return_counts=1)] 
Out[271]: 
array([[ 0.4, 2. ], 
     [ 0.5, 2. ], 
     [ 0.6, 1. ], 
     [ 5. , 1. ]]) 

我們可以從np.unique壓縮輸出的列表輸出 -

In [283]: zip(*np.unique(df.a, return_counts=1)) 
Out[283]: [(0.40000000000000002, 2), (0.5, 2), (0.59999999999999998, 1), (5.0, 1)] 

上或直接使用zipvalue_counts() ou tput的 -

In [338]: b = df['a'].value_counts() 

In [339]: zip(b.index, b.values) 
Out[339]: [(0.40000000000000002, 2), (0.5, 2), (0.59999999999999998, 1), (5.0, 1)]