如何按python中元素列表中显示的顺序为每个唯一元素分配编号

如何按python中元素列表中显示的顺序为每个唯一元素分配编号,python,dataframe,Python,Dataframe,我有一个按时间排序的元素列表 身份证件 时间 A. 2020-03-01 A. 2020-03-02 B 2020-03-05 B 2020-03-06 B 2020-03-07 B 2020-03-08 C 2020-03-10 C 2020-03-15 您可以使用pd.factorize codes, uniques = pd.factorize(df['id']) df['uniq_val'] = codes 或者您可以使用sklearn.preprocessing.LabelEncod

我有一个按时间排序的元素列表

身份证件 时间 A. 2020-03-01 A. 2020-03-02 B 2020-03-05 B 2020-03-06 B 2020-03-07 B 2020-03-08 C 2020-03-10 C 2020-03-15
您可以使用
pd.factorize

codes, uniques = pd.factorize(df['id'])
df['uniq_val'] = codes
或者您可以使用
sklearn.preprocessing.LabelEncoder

from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
df['uniq_val'] = enc.fit_transform(df['id'])

您可以使用
pd.factorize

codes, uniques = pd.factorize(df['id'])
df['uniq_val'] = codes
或者您可以使用
sklearn.preprocessing.LabelEncoder

from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
df['uniq_val'] = enc.fit_transform(df['id'])

您还可以使用
ord
函数将字符转换为ASCII码。
A
的ASCII码为65,因此通过将该值减去65,可以将其转换为数字:

df['Uniq_val']=df['ID']。应用(lambda ID:ord(ID)-65)
完整代码,假设您正在使用
pandas
DataFrame,如下所示:

将熊猫作为pd导入
列=['ID','TIME']
inp=[
('A','2020-03-01'),
('A','2020-03-02'),
('B','2020-03-05'),
('B','2020-03-06'),
]
df=pd.DataFrame(inp,columns=columns)
df['Uniq_val']=df['ID'].应用(lambda ID:ord(ID)-65)

ID时间唯一值
0A2020-03-01 0
1A 2020-03-02 0
2b 2020-03-05 1
3B 2020-03-06 1

您还可以使用
ord
函数将字符转换为ASCII码。
A
的ASCII码为65,因此通过将该值减去65,可以将其转换为数字:

df['Uniq_val']=df['ID']。应用(lambda ID:ord(ID)-65)
完整代码,假设您正在使用
pandas
DataFrame,如下所示:

将熊猫作为pd导入
列=['ID','TIME']
inp=[
('A','2020-03-01'),
('A','2020-03-02'),
('B','2020-03-05'),
('B','2020-03-06'),
]
df=pd.DataFrame(inp,columns=columns)
df['Uniq_val']=df['ID'].应用(lambda ID:ord(ID)-65)

ID时间唯一值
0A2020-03-01 0
1A 2020-03-02 0
2b 2020-03-05 1
3B 2020-03-06 1

能否提供您的列表的示例代码?能否提供您的列表的示例代码?