Python Panda Concat多行

时间:2015-12-28 19:10:14

标签: python sql csv

我使用以下代码创建合并的Panda DataFrame。

class Mock

但由于Dataframe2中有多行,我遇到了具有相同ID的重复行的问题。

所以,现在,我想要的最终结果是:

DataFrame 1

mergedPanda = indicatorPanda.merge(commentPanda, on='id', how='left')

DataFrame 2

ID  VALUE        DATE
1   google.com   12/28/2015
2   yahoo.com    12/28/2015
3   cnn.com      12/28/2015
4   facebook.com 12/28/2105

所需的结果将在此处

ID  COMMENT
1   Bad Stuff
1   Much Worse Stuff 
2   Good Stuff
3   Werid Stuff
4   Crazy Stuff

有没有办法将评论以某种角色连接在一起?我知道我们不在常规SQL和Panda的范围内。

1 个答案:

答案 0 :(得分:1)

您可以先在第二帧上执行groupby以获得所需的管道分隔版本,然后将其与第一帧合并:

In [27]: df1
Out[27]:
   ID         VALUE        DATE
0   1    google.com  12/28/2015
1   2     yahoo.com  12/28/2015
2   3       cnn.com  12/28/2015
3   4  facebook.com  12/28/2105

In [28]: df2
Out[28]:
   ID           COMMENT
0   1         Bad Stuff
1   1  Much Worse Stuff
2   2        Good Stuff
3   3       Werid Stuff
4   4       Crazy Stuff

In [29]: df2.groupby("ID").agg(" | ".join)
Out[29]:
                         COMMENT
ID
1   Bad Stuff | Much Worse Stuff
2                     Good Stuff
3                    Werid Stuff
4                    Crazy Stuff

In [30]: df1.merge(df2.groupby("ID").agg(" | ".join), left_on = "ID", right_index=True, how="left")
Out[30]:
   ID         VALUE        DATE                       COMMENT
0   1    google.com  12/28/2015  Bad Stuff | Much Worse Stuff
1   2     yahoo.com  12/28/2015                    Good Stuff
2   3       cnn.com  12/28/2015                   Werid Stuff
3   4  facebook.com  12/28/2105                   Crazy Stuff