2017-05-28 6 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])] 

この場合、必要な対応するグループ名の情報はありません。ありがとうございました。

np.unique

答えて

1

dictに変換します

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

長い小数を心配しないでください。それらは浮動小数点表記の結果です。あなたはまだdictから期待していることを得る。

bd[0.4] 
# 2 
1

一つのアプローチ - 私たちは、リスト出力用np.uniqueからの出力を圧縮することができます

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. ]]) 

- -

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

または上で直接zipを使用し

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

のサンプル実行value_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)] 
関連する問題