python - Pandas :为groupby标识的每个组分配一个索引

标签 python pandas

当使用 groupby() 时,如何创建一个包含组编号索引的新列的 DataFrame,类似于 R 中的 dplyr::group_indices。例如,如果我有

>>> df=pd.DataFrame({'a':[1,1,1,2,2,2],'b':[1,1,2,1,1,2]})
>>> df
   a  b
0  1  1
1  1  1
2  1  2
3  2  1
4  2  1
5  2  2

我怎样才能得到像这样的DataFrame

   a  b  idx
0  1  1  1
1  1  1  1
2  1  2  2
3  2  1  3
4  2  1  3
5  2  2  4

(idx 索引的顺序无关紧要)

最佳答案

这是使用来自 a comment above by Constantinongroup(自 pandas 0.20.2 起可用)的解决方案.

import pandas as pd
df = pd.DataFrame({'a':[1,1,1,2,2,2],'b':[1,1,2,1,1,2]})
df['idx'] = df.groupby(['a', 'b']).ngroup()
df
   a  b  idx
0  1  1    0
1  1  1    0
2  1  2    1
3  2  1    2
4  2  1    2
5  2  2    3

关于python - Pandas :为groupby标识的每个组分配一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41594703/

相关文章:

python - 如何从列表中删除额外的 ''

python - 在 Python 中的另一个函数中获取调用者函数名称?

python - 如何将选定的列附加到具有不同列的 df 中的 pandas 数据框

python - 不允许合并超过一层的重叠

python - hadoop 流中的 pd.read_csv 问题

python - 制作数据类型的直方图

python with object 模拟多个with对象

python - 当引用计数降到零后,CPython 如何检测到哪里可以找到 pool_header?

python - Python 3 和 matplotlib 中的 Unicode 绘图标记

python - 为什么将字符串的总和转换为 float