如何在数据框中合并数据

时间:2018-07-03 08:32:29

标签: python python-2.7 pandas dataframe pandas-groupby

我正在使用在csv文件中具有记录的数据集:

 C_id  C_Name        S_Name                Phone
    97  [Bedsheet]     Shree Collection     77422222
    97  [Bedsheet]    Shree Collection      77422222
    105 [Jeans]       Shree Collection      77422222
    61  [Kurti]       F Fashion             9040645
    95  [Lehenga]     Shree Collection      77422222
    61  [Kurti]        F Fashion        9040645
    73  [Cotton Kurti] F Fashion        9040645
    117 [Earring]              Banti        90406459

我想以如下方式显示数据:

C_id       C_Name                    S_Name              Phone
97,105,95   Bedsheet,Jeans,Lehenga   Shree Collection    77422222
61,73       Kurti,Cotton Kurti       F Fashion           9040645
117          Earring                 Banti               90406459

如何实现

1 个答案:

答案 0 :(得分:0)

您可以将groupbyagg和两个str.join函数一起使用。您需要特别注意的部分:

  • 对于C_id,由于str.join需要字符串,因此您需要将int转换为str
  • 对于C_Name,您有一系列列表。 itertools.chain是将这些列表平整为非嵌套可迭代的有效方法。

这是一个可行的示例:

from itertools import chain

agg_funcs = {'C_id': lambda x: ','.join(map(str, x)),
             'C_Name': lambda x: ','.join(chain.from_iterable(x))}

res = df.groupby(['S_Name', 'Phone']).agg(agg_funcs).reset_index()

print(res)

             S_Name     Phone          C_id                           C_Name
0             Banti  90406459           117                          Earring
1         F Fashion   9040645      61,61,73         Kurti,Kurti,Cotton Kurti
2  Shree Collection  77422222  97,97,105,95  Bedsheet,Bedsheet,Jeans,Lehenga