2015-12-14 52 views
3

我需要根据groupby结果添加新列。以下面的数据框为例。熊猫 - 使用Groupby列出新列中的数据列

ID  City  
234x Lima 
342x Rica 
234x Rio 
333x NYC 
333x SF 

我一直对使用GROUP_BY获得数:

df_GroupBy = pd.DataFrame({'count':df.groupby([ "ID"]).size()}).reset_index() 

这给出了一个输出:

ID  Count 
234x  2 
342x  1 
333x  2 

我想现在做的就是这样的输出:

ID  City  City_2 
234x  Lima  Rio 
342x  Rica  
333x  NYC  SF 

我看看在Transformmap编辑但没有太大的成功。谢谢你的帮助。

回答

2

你可以

cities = df.groupby('ID')['City'].apply(lambda x: pd.Series([city for city in x])).unstack() 

     0 1 
ID    
234x Lima Rio 
333x NYC SF 
342x Rica NaN 
+0

感谢。这适用于所提供的示例。我的主要目的是跨多个栏目进行组合。例如,如果输入数据具有['ID','City1','City2','CityN']列,您会有什么建议? – everestbaker

+0

这可能会稍有不同,可能会增加一个准备步骤 - 您是否介意在样本数据中发布一个新问题,以便我可以说明问题? – Stefan

+0

不幸的是我每90分钟只能发一次。你能在这里发布你的解决方案吗谢谢。 – everestbaker