2016-07-20 2 views
-1

Name列でデータをソートしようとしています。パンダは、データセットに列の値が何回表示されるかを確認します。

は今のところ、私はこれをやっている:

df['Count'] = df.apply(lambda x: len(df[df['Name'] == x['Name']]), axis=1) 
df[df['Count'] > 50][['Name', 'Description', 'Count']].drop_duplicates('Name').sort_values('Count', ascending=False).head(100) 

しかし、このクエリは非常に遅いですが、それは実行に時間がかかります。

これを行うにはもっと効率的な方法はありますか?

+2

DataFrameのサンプルを提供してください! – Alex

+2

http://stackoverflow.com/questions/22391433/count-the-frequency-that-a-value-occurs-in-a-dataframe-column – Lynob

+0

@Lynobは魅力的に働いていました。 –

答えて

0

を:リンクを提供するための@Lynobへ

df['Count'] = df.groupby('Name')['Name'].transform('count') 

ビッグ感謝答えをつけて

0

Series.value_countsを使用できます。

df = pd.DataFrame([[0, 1], [1, 0], [1, 1]], columns=['a', 'b']) 
print(df['b'].value_counts()) 

出力

1 2 
0 1 
Name: b, dtype: int64 
+0

右ですが、dfの他のフィールドも必要です( '名前'、 '説明')。 'value_counts'はそれらを省略します。 –

0

このお試しください:私が探してきた解決策がある

a = ["jim"]*5 + ["jane"]*10 + ["john"]*15 
n = pd.Series(a) 

sorted((n.value_counts()[n.value_counts() > 5]).index) 

['jane', 'john'] 
+0

私はまだ私のdfから '名前'、 '説明'のようなフィールドを知りたいです。だから私は 'counts 'という新しい列を作成するために、' df.apply'メソッドに 'value_counts()'を適用する方法は何でしょうか? –

+0

いくつかのデータまたはサンプルのデータフレームを提供する必要があります。 – Merlin

+0

私はサンプルデータの答えを作ったbeacuseコメントは作業することは不可能です。 –

関連する問題