2017-06-27 7 views
0

私は、Rule_IDという列の1つを持つデータフレームdfを持っています。私は、カラム内のすべてのユニークなルールのIDをカウントし、2列、ユニークなルールIDを含む最初の1とその数を含む第二のものと新しいデータフレームDF1を作成したいデータフレームを操作する

Rule_ID 
[u'2c78g',u'df567',u'5ty78'] 
[u'2c78g',u'd67gh',u'df890o'] 
[u'd67gh',u'df890o',u'5ty78'] 
[u'2c78g',u'5ty78',u'df890o'] 

- それはのようなデータを持っていますID。上記ケースDF1、例えば含有するであろう -

Rule_ID  Count 
u'2c78g' 3 
u'df567' 1 
u'5ty78' 3 
u'd67gh' 2 
u'df890o' 3 
+1

解決策を試すか? – EFT

答えて

1

オプション1

df.Rule_ID.apply(pd.Series).stack().value_counts() 

df890o 3 
5ty78  3 
2c78g  3 
d67gh  2 
df567  1 
dtype: int64 

オプション2

pd.value_counts(pd.np.concatenate(df.Rule_ID.values)) 

df890o 3 
5ty78  3 
2c78g  3 
d67gh  2 
df567  1 
dtype: int64 

文字列の場合は、次のようにします。

from ast import literal_eval 

pd.value_counts(pd.np.concatenate([literal_eval(x) for x in df.Rule_ID.values])) 
# or 
# df.Rule_ID.apply(literal_eval).apply(pd.Series).stack().value_counts() 

df890o 3 
5ty78  3 
2c78g  3 
d67gh  2 
df567  1 
dtype: int64 
+0

TypeError:unboundメソッドnunique()はSeriesインスタンスを最初の引数として呼び出さなければなりません(strインスタンスが代わりに取得されます) – ComplexData

+0

@Dreamerこれで修正されるはずです。 – piRSquared

+0

これらの3つのIDはすべて同じ数になっているので、 - ['df890o'、 '5ty78'、 '2c78g'] 3のような結果を得ています。あなたはそれを壊すことができる?各セル内の1つのルールIDの場合と同様に、それに対応するカウントがその隣にあります。どうもありがとうございます!あなたはいつもとても助けてくれました。 – ComplexData

関連する問題