【发布时间】:2020-11-26 04:58:58
【问题描述】:
考虑示例数据框('value' 列在这里没有意义):
df = pd.DataFrame({'key':list('AABBBC'), 'value': [1, 2, 3, 4, 5, 6]})
我想要的是一个仅计算“键”列的唯一值的列,需要注意的是值计数将递增,并且仅当单元格值未出现在前几行中时计数才会增加。所以这里“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,也不是最有效的。任何建议表示赞赏。
【问题讨论】: