2017-07-28 4 views
0

私は5列の100万レコードのデータフレームを持っています。パンダ:頻度分布に基づいてパワーロウに続くデータフレームの列を2つに分割する方法は?

unique_index,name,company_name,city_id,state_id 

company_nameには100k個の固有レコードがあります。これは権力の法則に従います。トップ5000 company_namesはレコードの70%をカバーしています。

Power law

私は、データの先頭5000に、残りのセットから貢献する企業からのサンプルの数と同じ数を取りたいです。

私はpd.qcut(df['company_name'],[0.25,1]を試しました。これは私に以下のエラーを与えました: TypeError: unorderable types: str() <= float()qcutは文字列に適用できませんか?

答えて

1

トップ企業を取得しようとすると、value_counts()と表示され、トップ企業の内外にある場合はTrue/Falseという新しい列が作成されます。

top5000 = df['company_name'].value_counts().index[0:5000].tolist() 
df['InTop'] = df['company_name'].isin(top5000) 

これは、あなたがdf['InTop'] == Trueグループとdf['InTop'] == False

+0

はありがとうございグループからサンプリングすることが可能になる:私は、それは次のようになりますと思います。 Qcutは文字列では機能しません。 – user1930402

関連する問題