簡體   English   中英

在熊貓數據框中查找和替換壞字符

[英]Finding and replacing bad characters in pandas dataframe

我在試圖擺脫熊貓數據框中的壞字符時陷入困境。 這是一個自動化腳本,用於處理需要保存在 cp1252 中的傳入數據,我希望能夠通過解析錯誤來即時處理任何有問題的字符。 我不在乎它們被替換成什么。 我已經嘗試過一百萬種變化,但一無所獲(這是 python 3 pandas 25)

while True:
    try:
        print('saving')
        data.to_csv('total.csv', index=False, quoting=csv.QUOTE_ALL, encoding='cp1252')
        break
    except UnicodeEncodeError as e:
        print(e)
        badchar = re.search(r"character (.+?) in", str(e)).group(1)
        print('Found bad character, removing. . . ')
        uchar = u"{}".format(badchar)
        print(uchar)
        data = data.replace(uchar.encode('utf-8'), '')

返回:

saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . . 
'\u2264'
saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . . 
'\u2264'
saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . . 
'\u2264'
saving

我嘗試了很多變體:

data = data.replace(uchar, '')

data = data.replace(uchar.encode('utf-8').decode('utf-8'), '')等等。 .

我也試過 u'\\2264', u'u\\2264'

我在數據框中也找不到這個。 這不返回任何內容:

for col in data:
    if sum(data[col].astype(str).str.contains(u'\2264')) > 0:
        print(col)

任何幫助將不勝感激謝謝!

您必須使用正則表達式替換功能: https : //pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html

df.replace(to_replace=r'^ba.$', value='new', regex=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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