簡體   English   中英

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 行)和大量的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM