2017-05-02 40 views
-2

我有一个数据帧,看起来像这样:在id如何将熊猫数据框中的前2个单词分组并计数?

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

我想通过组每行第2个字,并返回与这两个词开始的项目数。如果列值不包含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