Python - 将一个很长的字符串替换成整数

Python - Replace a very long string into integer

我有一个巨大的数据集,我正在寻求改进方法以更高效地使用它。一种替代方法是用整数替换字符串 (id)。但是,我需要以最有效(使用更少的 RAM)的方式进行这种转换。目前我会做:

import pandas as pd

df = pd.DataFrame({'Customer_ID': ['AWE','GRA', 'GRA', 'FAOOS', '1293912ASJDAS', '1293912ASJDAS', '1293912ASJDAS'],
             'X2': [76,858,68,678,8678,78,6788],
             'X3': [312,3123,123,54,3523,56,2346]})

unique_ids = df['Customer_ID'].drop_duplicates().tolist()

df_ = pd.DataFrame({'unique_ids': unique_ids,
              'int_ids': list(range(0,len(unique_ids)))
    
})

df.merge(df_, how='left', left_on='Customer_ID', right_on='unique_ids').drop(['Customer_ID', 'unique_ids'], axis=1)

但是耗时太长(真实数据有20M行)而且内存也很大,请问有什么办法可以改善吗? (欢迎使用任何有效的软件包来完成此特定任务)

使用

df['id'] = df.Customer_ID.astype('category').cat.codes

df
 
     Customer_ID    X2    X3  id
0            AWE    76   312   1
1            GRA   858  3123   3
2            GRA    68   123   3
3          FAOOS   678    54   2
4  1293912ASJDAS  8678  3523   0
5  1293912ASJDAS    78    56   0
6  1293912ASJDAS  6788  2346   0