合并其中一列中具有公共值的行

  • 本文关键字:一列 合并 python pandas
  • 更新时间 :
  • 英文 :


我有一个像这样的数据帧

df = pd.DataFrame([{ 'price': 123, 'name': 'anna', 'amount': 1,'telephone':956},
{ 'price':   7, 'name': 'anna', 'amount': 2,'telephone':956},
{ 'price':  42, 'name': 'bob', 'amount': 30,'telephone':956},
{ 'price':   1, 'name': 'charlie', 'amount': 10,'telephone':956},
{ 'price':   2, 'name': 'charlie', 'amount': 100,'telephone':956}])
print(df)
price     name  amount  telephone
0    123     anna       1        956
1      7     anna       2        956
2     42      bob      30        956
3      1  charlie      10        956
4      2  charlie     100        956

我想要一个像下面这样的数据帧

name  price-name-amount-telephone
anna  1-123-1-956|1-7-2-956
bod   2-42-30-956
charlie 3-1-100-956|3-2-100-956

GroupBy.ngroup表示组号,然后将-连接的列与|连接的列聚合:

df.insert(0, 'g', df.groupby('name', sort=False).ngroup() + 1)
df = (df.set_index('name')
.astype(str)
.agg('-'.join,1)
.groupby(level=0)
.agg('|'.join)
.reset_index(name='all')
)
print (df)
name                     all
0     anna   1-123-1-956|1-7-2-956
1      bob             2-42-30-956
2  charlie  3-1-10-956|3-2-100-956

最新更新