【问题标题】:Assign number to unique value in a dataframe list [duplicate]将数字分配给数据框列表中的唯一值[重复]
【发布时间】:2021-12-13 19:34:47
【问题描述】:

我有一个包含多行的数据框。有些行是重复的,但我想将这些重复与其余行一起考虑在内。我想为从 100 开始的每一行分配一个数字,当遇到重复时,它看起来更像 100、101、101、102、103、103、103 等等,重复的数字是列出的更多不止一次。

感谢@Cleb,我已经使用了我在这里找到的代码,但是,它并不是我想要的,我已经搞砸了一段时间,希望我能做到这一点无济于事。我还是 Python 新手,我什至可能没有使用正确的方法。

代码:

d = {ni: indi for indi, ni enumerate(df, start=100)}
index = [d[ni] for ni in df]

数据:

data = { 'ID':['161464','146446','146446','368416','464344','464344','464344'],
'Name':['Jen','Zach','Zach','Rachel','Scott','Scott','Scott']}

到目前为止,输出确实计算了重复项,但是,它在重复项计数的尾部开始分配的数字。例如。 100, 105, 105, 105, 105, 105 106,... 等等。 如果您有任何问题,请告诉我,感谢您的帮助。

【问题讨论】:

  • pd.factorize(df['ID'])[0] 或 df.groupby('ID')['ID'].transform('ngroup')。

标签: python pandas


【解决方案1】:

您可以使用pandas.factorize 来生成唯一ID。因为它从 0 开始,所以您可以添加 100 来获得从 100 开始的 id:

df['new_id'] = pd.factorize(df['ID'])[0]+100

输出:

       ID    Name  new_id
0  161464     Jen     100
1  146446    Zach     101
2  146446    Zach     101
3  368416  Rachel     102
4  464344   Scott     103
5  464344   Scott     103
6  464344   Scott     103

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2023-01-21
    • 2020-05-23
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2016-05-20
    • 2021-10-21
    相关资源
    最近更新 更多