pandas - 计算重复集并添加为新列

标签 pandas frame

我的数据框是这样的:

col1   col2  col3
divq   .233     1
divq   .991     2
divq  1.821     3
divq  2.889     1
divq   .121     2
divq   .337     3

我需要一个新的 col 来跟踪/计数 col3 并添加其出现次数。因此,在上面的示例中,新的 col4 将查找值 1、2、3 的序列并将其标记为第一次出现,然后继续并找到第二次出现的 1-3:

col4
1
1
1
2
2
2

在我的真实数据框中,上述内容有 10 次迭代。

最佳答案

首先你可以groupby第 3 栏:

In [11]: g = df.groupby('col3')

然后(取任意列)使用 transformation枚举每组的结果:

In [12]: g['col1'].transform(lambda x: np.arange(len(x)))
Out[12]: 
0    0
1    0
2    0
3    1
4    1
5    1
Name: col1, dtype: object

并将其设置为第 4 列:

In [13]: df['col4'] = g['col1'].transform(lambda x: np.arange(len(x)))

In [14]: df
Out[14]: 
   col1   col2  col3 col4
0  divq  0.233     1    0
1  divq  0.991     2    0
2  divq  1.821     3    0
3  divq  2.889     1    1
4  divq  0.121     2    1
5  divq  0.337     3    1

关于pandas - 计算重复集并添加为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252576/

相关文章:

python - 根据列值确定优先级并选择行

python - 避免设置复制警告

javascript - 如何使用 Javascript 删除嵌套框架和 iframe 的滚动条

html - 当屏幕太小时防止框架滚动

java - 页面未在所需的框架中加载

python - 如何将 seaborn 条形图绘制为子图?

python - 使用 sklearn 进行多项式回归的最简单方法?

python - Pandas duration groupby - 以定义的值开始组范围

python - 如何在 python 中使用 selenium 提交此表单?

html - 为什么我不应该使用 HTML 框架?