![](/img/trans.png)
[英]Cast a very long string as an integer or Long Integer in PySpark
[英]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 行)和大量的 RAM,有什么辦法可以改善這一點? (歡迎任何有效的軟件包用於此特定任務)
利用
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.