熊猫数据框按列表分组

时间:2018-10-11 08:56:24

标签: python dataframe group-by

我有以下数据框,其中包含人的名字及其缩写。目的是进行名称歧义消除:

    Names                       Abb
0   Michaele Frendu             [Mic, Fre]
1   Lucam Zamit                 [Luc, Zam]
2   magistro Johanne Luckys     [Joh, Luc]
3   Albano Fava                 [Alb, Fav]
4   Augustino Bagliu            [Aug, Bag]
5   Lucas Zamit                 [Luc, Zam]
6   Jngabellavit                [Jng]
7   Micheli Frendu              [Mic, Fre]
8   Luce                        [Luc]
9   Far                         [Far]

我可以按列表进行分组吗,即:第1、7和1.5行。后来我打算只用名字做一些类似的事情。

2 个答案:

答案 0 :(得分:1)

如果要使用分组list,则必须先将列转换为元组:

def func(x):
    print (x)
    #some code
    return x

df1 = df.groupby(df['Abb'].apply(tuple)).apply(func)

         Names         Abb
3  Albano Fava  [Alb, Fav]
         Names         Abb
3  Albano Fava  [Alb, Fav]
              Names         Abb
4  Augustino Bagliu  [Aug, Bag]
  Names    Abb
9   Far  [Far]
          Names    Abb
6  Jngabellavit  [Jng]
                     Names         Abb
2  magistro Johanne Luckys  [Joh, Luc]
  Names    Abb
8  Luce  [Luc]
         Names         Abb
1  Lucam Zamit  [Luc, Zam]
5  Lucas Zamit  [Luc, Zam]
             Names         Abb
0  Michaele Frendu  [Mic, Fre]
7   Micheli Frendu  [Mic, Fre]

答案 1 :(得分:0)

map

df.groupby(df['Abb'].map(tuple)).do_something

我这样做是因为列表不是可哈希的对象