猿问

Python:如何将数字映射到列中的唯一项目(枚举唯一对象)?

我需要将数字分配给数据框中特定列的唯一值,并将其作为新列...

例如:

ex_list=['12-B', '10002', '3A', '4', 'DCX', '3A']
df=pd.DataFrame(ex_list, columns=['Items'])

这是预期的输出

http://img1.mukewang.com/62d6a5850001a08e01900217.jpg

请注意,我需要对超过 1M 行的数据框执行此操作,因此肯定会喜欢一种有效的方法!



元芳怎么了
浏览 166回答 2
2回答

aluckdog

你可以这样做。import pandas as pdex_list=['12-B', '10002', '3A', '4', 'DCX', '3A']df=pd.DataFrame(ex_list, columns=['Items'])df['Num_Items']=pd.factorize(df['Items'].tolist())[0]输出    Items   Num_Items0   12-B    01   10002   12   3A      23   4       34   DCX     45   3A      2

蛊毒传说

ex_list=['12-B', '10002', '3A', '4', 'DCX', '3A']df=pd.DataFrame(ex_list, columns=['Items'])从列中获取唯一值,在这些唯一项和整数之间创建映射,然后沿Items列应用该映射。mapping = {item:i for i, item in enumerate(df["Items"].unique())}df["Num_Items"] = df["Items"].apply(lambda x: mapping[x])df
随时随地看视频慕课网APP

相关分类

Python
我要回答