按列(在pandas中)组合某些行中的值

时间:2016-12-13 18:28:17

标签: python pandas

我还没有找到适合我在熊猫中做什么的工具。 它可能需要groupby(),但我无法在文档或网络上找到pythonic方式(或任何其他方式)。

我有一张表格,其中包含类似结构的数据(30-50列):

ID   name  Town     s1       s2       s3       s4

21   Joe   Bonn     rd       fd       NaN      aa
21   Joe   Bonn     NaN      hg       kk       NaN
22   Ann   Oslo     jg       hg       zt       uz
29   Mya   Rome     rd       fd       NaN      aa

我想组合具有相同ID(可能是索引)的行,将行中的值组合而不重复,形成字符串值的联合类型。

结果将是:

21   Joe   Bonn     rd       fd,hg    kk       aa
22   Ann   Oslo     jg       hg       zt       uz
29   Mya   Rome     rd       fd       NaN      aa

df.groupby(df.index).sum()是一个猜测,但它只是在每个索引旁边给出一个NaN。

1 个答案:

答案 0 :(得分:3)

可以尝试这样做,你需要在使用join函数之前删除缺失的值:

df.groupby(["ID", "name", "Town"], as_index=False).agg(lambda col: ','.join(col.dropna()))

#   ID  name    Town    s1     s2    s3    s4
#0  21   Joe    Bonn    rd  fd,hg    kk    aa
#1  22   Ann    Oslo    jg     hg    zt    uz
#2  29   Mya    Rome    rd     fd          aa