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

Python:如何将数字映射到列中的唯一项(枚举唯一对象)?,python,pandas,dataframe,mapping,enumerate,Python,Pandas,Dataframe,Mapping,Enumerate,我需要将数字分配给数据帧中特定列的唯一值,并使其成为新列 例如: ex_list=['12-B', '10002', '3A', '4', 'DCX', '3A'] df=pd.DataFrame(ex_list, columns=['Items']) 这是预期的输出: 请注意,我需要为超过1M行的数据帧执行此操作,因此肯定会感谢一种有效的方法 你可以这样做 import pandas as pd ex_list=['12-B', '10002', '3A', '4', 'DCX', '3

我需要将数字分配给数据帧中特定列的唯一值,并使其成为新列

例如:

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

这是预期的输出


请注意,我需要为超过1M行的数据帧执行此操作,因此肯定会感谢一种有效的方法

你可以这样做

import pandas as pd
ex_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_Items
0   12-B    0
1   10002   1
2   3A      2
3   4       3
4   DCX     4
5   3A      2
从列中获取唯一值,在这些唯一项和整数之间创建映射,然后沿
列应用该映射

mapping = {item:i for i, item in enumerate(df["Items"].unique())}
df["Num_Items"] = df["Items"].apply(lambda x: mapping[x])
df

df['Num\u Items']=df['Items'].factorize()[0]
?或
df['Num\u Items']=df.groupby('Items').ngroup()
如何基于
“现在,我可以基于唯一项的计数生成数字:
唯一项?因为您进行了计数,所以应该是
所有Num\u items列的值都等于1,除了3A Item列的值是2之外?”
@QuangHoang您能解释一下
[0]
最后包含的?
factorize
返回两个元组:代码,这是您想要的,和解码,相当于
df['Items'].uniques()
。您可以打印
df['Items'].factorize()
以查看详细信息。
mapping = {item:i for i, item in enumerate(df["Items"].unique())}
df["Num_Items"] = df["Items"].apply(lambda x: mapping[x])
df