例如,我有数千行,其中之一是列“ cow_ID”,其中每个母牛ID有几行。我想将这些ID替换为从1开始的数字,以便于记住。
df['cow_id'].unique().tolist()
导致:
5603,
5606,
5619,
4330,
5587,
4967,
5554,
4879,
4151,
5501,
4723,
4908,
3963,
4023,
4573,
3986,
5668,
4882,
5645,
5548
如何将每个唯一ID更改为新数字,例如:
5603 -> 1
5606 -> 2
答案 0 :(得分:3)
尝试看看
df.groupby('cow_id').ngroup()+1
或尝试pd.factorize
:
pd.factorize(df['cow_id'])[0]+1
与文档中一样,pd.factorize
将对象编码为枚举类型或分类变量。
请注意,有两个pd.factorize返回变量
答案 1 :(得分:1)
您要查找的内容应使用分类编码标记。 python中的sklearn库具有许多预处理方法,其中标签编码器应为您完成这项工作。请参考此链接。 https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html#sklearn.preprocessing.LabelEncoder
还请记住,使用这样的编码可能会在您的数据集中引入一些偏差,因为某些算法可以将一个标签视为高于另一个标签,即1> 2> ...> 54。 请参阅此博客以了解有关编码以及何时使用什么的更多信息。 https://towardsdatascience.com/encoding-categorical-features-21a2651a065c
如果您有任何疑问,请告诉我。
答案 2 :(得分:1)