按表中的特定值联接行

2024-05-19 10:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧

     Name     Area
0   Emmeline    G
1       Erek    L
2    Perrine    H
3    Donelle    K
4    Nichols    E
5    Corinne    B
6     Emilia    A
7    Dierdre    G
8    Hadrian    K
9      Tyson    B
10  Emmeline    D
11     Wynne    L
12     Luigi    H
13  Martelle    J
14   Nichols    G
15   Nichols    D
16     Tyson    G
17   Perrine    D
18     Tyson    C
19  Martelle    C

我想连接具有相同名称的行。因此,最终的数据帧必须如下所示

          Name     Area
    0   Emmeline    GD
    1       Erek    L
    2    Perrine    HD
    3    Donelle    K
    4    Nichols    EGD
    5    Corinne    B
    6     Emilia    A
    7    Dierdre    G
    8    Hadrian    K
    9      Tyson    BGC
    10     Wynne    L
    11     Luigi    H
    12  Martelle    JC

我相信我可以通过混合groupby和join来做到这一点,但我对如何做到这一点有点困惑。有什么建议吗


Tags: 数据nameareaemiliacorinnetysonwynnedierdre
3条回答

请尝试groupby和sum

df.groupby(by="Name").sum().reset_index()

另一个选项是groupby().apply

# `as_index` and `sort` options are to match the order in expected output
df.groupby('Name', as_index=False, sort=False)['Area'].apply(''.join)

输出:

        Name Area
0   Emmeline   GD
1       Erek    L
2    Perrine   HD
3    Donelle    K
4    Nichols  EGD
5    Corinne    B
6     Emilia    A
7    Dierdre    G
8    Hadrian    K
9      Tyson  BGC
10     Wynne    L
11     Luigi    H
12  Martelle   JC

agg函数中使用groupby().str.cat

df.groupby('Name')['Area'].agg(lambda x: x.str.cat()).to_frame('Area')



          Area
Name         
Corinne     B
Dierdre     G
Donelle     K
Emilia      A
Emmeline   GD
Erek        L
Hadrian     K
Luigi       H
Martelle   JC
Nichols   EGD
Perrine    HD
Tyson     BGC
Wynne       L

相关问题 更多 >

    热门问题