首页 > 解决方案 > Pandas Dataframe:如何创建另一列的增量唯一值计数列

问题描述

考虑示例数据框(“值”列在这里没有意义):

df = pd.DataFrame({'key':list('AABBBC'), 'value': [1, 2, 3, 4, 5, 6]})

df

我想要的是一个仅计算“键”列的唯一值的列,需要注意的是值计数将递增,并且如果单元格值没有出现在前几行中,则计数只会增加。所以这里“A”将被赋值为 1,“B”为 2,“C”为 3。

期望的结果如下所示:

想要的

现在我只能通过几个步骤来实现这一点:

df1 = df.drop_duplicates('key').reset_index(drop = True).drop(columns = ['value'])
df1['count_unique'] = df1.index+1


pd.merge(df, df1.set_index(['key']), left_on = ['key'], right_index= True, how = 'left')

它看起来不是很 Pythonic,也不是最有效的。任何建议表示赞赏。

标签: pythonpandascount

解决方案


是吗:

df['count_unique'] = df['key'].factorize()[0] + 1

输出:

  key  value  count_unique
0   A      1             1
1   A      2             1
2   B      3             2
3   B      4             2
4   B      5             2
5   C      6             3

推荐阅读