2017-05-02 3 views
-2

私はこのようになりますデータフレーム持っている:私はid列内の行あたりの最初の2つのワードによってグループ化したいpandasデータフレームの列で最初の2単語ずつグループ分けしてカウントするにはどうすればいいですか?

dfx = pd.DataFrame({'id' : ['blue apple werewolf', 'blue apple cat', 
'yellow tangerine','blue apple dog', 'orange dog nectarine','black', 'green apple cat'] }) 

をし、それら二つの単語で始まる項目の数を返します。列の値に2ワードが含まれていない場合は、最初のワードのみをカウントする必要があります。

ID    COUNT 
blue apple   3 
yellow tangerine 1 
orange dog   1 
green apple  1 
black    1 

すべてのヘルプ:

だから、結果としてデータフレームは次のようになりますか?

答えて

2

あなたは、抽出物を使用して、それを得ることができる必要があります:

dfx = pd.DataFrame({'id' : ['blue apple werewolf', 'blue apple cat', 
'yellow tangerine','blue apple dog', 'orange dog nectarine','black', 'green apple cat'] }) 

dfx.groupby(dfx.id.str.extract('([^\ ]+[\ ]*[^\ ]*)',expand=False)).count().sort_values('id',ascending =False).rename(columns={'id':'COUNT'}).reset_index() 
+0

おかげで、これは近いです。しかし、最初の列に 'id'を表の値として追加します。結果は、私が提供した例の結果のように降順に並べられません。 – samthebrand

+0

が調整されましたが、これは問題にはっきりとは言及されていませんでした。それは簡単に拡張できます。詳細については、http://stackoverflow.com/help/how-to-askを参照してください。 – lsalamon

関連する問題