2017-07-25 91 views
1

我对Python和熊猫相当陌生,所以对于初学者的问题感到抱歉,但我还没有找到解决方案来完成这个简单的任务。在单个数据框上合并具有相同索引的多行?

数据框:

Org  Data1  Data2 
1   1234  Win 
1   2345  Win 
2      Loss 
3   3456  Win 
3   4567  Win 

我一直在尝试使用此GROUPBY和应用拉姆达

df.groupby(["Org"])["Data1", "Data2"].apply(lambda x: ';;'.join(x.astype(str))) 

这并不正确,因为结果是唯一的

Org 
1 Data1;;Data2 
2 Data1;;Data2 
3 Data1;;Data2 

此功能是我想实现的:

Org  Data1   Data2 
1   1234 ;; 2345  Win ;; Win 
2   NaN    Loss 
3   3456 ;; 4567  Win ;; Win 

Org表示我想用来对其进行分组的定义索引。同一个组织向Data1和Data2回答“1 2 3”应该到达excel中的同一个单元格,然后我将其打印为一个全新的excel文件。

任何人都可以帮助我这个相当简单(但对我来说难以置信)的问题?

回答

3

你是真的很近,只需要agg代替apply

df = df.groupby(["Org"])["Data1", "Data2"].agg(lambda x: ';;'.join(x.astype(str))) 
print (df) 
       Data1  Data2 
Org       
1 1234.0;;2345.0 Win;;Win 
2    nan  Loss 
3 3456.0;;4567.0 Win;;Win 
+0

非常感谢您的回复快速和简单的解决方案!显然我只是使用了错误的搜索条件:)。 agg解决了这个。 – hexi

+0

Supeeer,很高兴能帮助! – jezrael

相关问题