我有一個列表中的扭曲數據存儲在文本中,我需要做一些爭論,但無法弄清楚什麼是最好和最有效的方法的巨大列表。另一個考慮因素是這個數據非常龐大。樣本量爲160萬行,產量高達數百萬。通過pandas.DataFrame糾正字符串中的拼寫錯誤
In [200]:data=['Bernard 51','Ber%nard Bachelor','BER78NARD$ bsc','BERnard$d B.']
In [201]:test=pd.DataFrame(data,columns=['Names'])
In [2020:test
Out[202]:
Names
0 Bernard 51
1 Ber%nard Bachelor
2 BER78NARD$ bsc
3 BERnard$d B.
我的目標是輸出
Names
0 bernard
1 bernard ba
2 bernard ba
3 bernard ba
我的僞代碼將是這樣的:
In[222]:test_processed=pd.DataFrame(test.Names.str.lower()) #covert all str to lower
In[223]:test_processed
Out[223]:
Names
0 bernard 51
1 ber%nard bachelor
2 ber78nard$ bsc
3 bernard$d b.
In[224]:test_processed2=pd.DataFrame(test_processed.Names.str.replace('[^\w\s]',''))
#removes punctuation/symbol typos
In[225]:test_processed2
Out[225]:
Names
0 bernard 51
1 bernard bachelor
2 ber78nard bsc
3 bernardd b
In[226]:BA=['bachelor','bsc','b.'] #define list to be replaced with ba
In[227]:test_processed.replace(BA,'ba') #replace list defined above with standard term
Out[227]:
Names
0 bernard 51
1 ber%nard bachelor
2 ber78nard$ bsc
3 bernard$d b.
#no change, didn't work
我的觀察告訴我更換了一個列表不工作,如果被應用在其上熊貓數據框。
原因我沒有使用test_processed2.Names.str.replace是因爲DataFrame.str.replace不允許使用列表來替換。
我之所以使用列表,是因爲我希望隨着越來越多的不同變量的出現,可以輕鬆地維護列表。我很樂意聽取您的意見,如果您有解決方案或使用Python以外的更好的選擇,或者大熊貓。
@sashkello 1.主要目的是從數據中刪除錯別字。 2.如果問題不清楚,那麼請耐心等待,但我需要有效地移除列表中的一串數據並將其替換。 – BernardL
我明白你的需要。究竟是什麼問題?速度?正確性? – sashkello
@sashkello基本上我不能找到一種方法,用標準術語來替換文本列表,特別是在pd.DataFrame。該清單是巨大的和扭曲的。 – BernardL