本文介绍了如何枚举 pandas 群中的群的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的DataFrame:

I have a DataFrame like this:

      name visit foo
0   andrew    BL   a
1   andrew    BL   a
2   andrew    BL   b
3   andrew    BL   b
4      bob    BL   c
5      bob    BL   c
6      bob    BL   d
7      bob    BL   d
8      bob   M12   e
9      bob   M12   e
10     bob   M12   f
11     bob   M12   g
12   carol    BL   h
13   carol    BL   i
14   carol    BL   j
15   carol    BL   k

我如何创建一个新列来枚举每个['name', 'visit']组的foo组,像这样?

How can I create a new column which enumerates groups of foo per group of ['name', 'visit'], like this?

      name visit foo  enum
0   andrew    BL   a     1
1   andrew    BL   a     1
2   andrew    BL   b     2
3   andrew    BL   b     2
4      bob    BL   c     1
5      bob    BL   c     1
6      bob    BL   d     2
7      bob    BL   d     2
8      bob   M12   e     1
9      bob   M12   e     1
10     bob   M12   f     2
11     bob   M12   g     3
12   carol    BL   h     1
13   carol    BL   i     2
14   carol    BL   j     3
15   carol    BL   k     4

推荐答案

使用 groupby factorize :

df['enum'] = df.groupby(['name', 'visit'])['foo'].transform(lambda x: pd.factorize(x)[0] + 1)
print (df)
      name visit foo  enum
0   andrew    BL   a     1
1   andrew    BL   a     1
2   andrew    BL   b     2
3   andrew    BL   b     2
4      bob    BL   c     1
5      bob    BL   c     1
6      bob    BL   d     2
7      bob    BL   d     2
8      bob   M12   e     1
9      bob   M12   e     1
10     bob   M12   f     2
11     bob   M12   g     3
12   carol    BL   h     1
13   carol    BL   i     2
14   carol    BL   j     3
15   carol    BL   k     4

这篇关于如何枚举 pandas 群中的群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 04:08