Pandas 讀取 Excel 文件去掉首尾的換行符


Pandas 庫可以讀取 Excel 文件、csv 文件等,但是 Windows 系統默認的換行符為 \r\n,這導致讀取的數據末尾可能帶有 \r,這會給后續的操作帶來不便。不過,Pandas 有自帶的方法可以方便地去掉這些特殊字符,比如 \r,\n,\t,空格。

我們手動構造一個含有上述換行符的 Series,使用 series.str.strip() 來清洗數據。

環境准備:

conda install pandas
conda install xlrd
conda install openpyxl

測試用例:

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: foo = pd.DataFrame({"name":["amy\n","bob\t","candy\r","dog\r\n","fish ",np.nan]})

In [4]: foo
Out[4]: 
      name
0    amy\n
1    bob\t
2  candy\r
3  dog\r\n
4    fish 
5      NaN

In [5]: foo["name"].str.strip()
Out[5]: 
0      amy
1      bob
2    candy
3      dog
4     fish
5      NaN
Name: name, dtype: object

結果顯示是可以去除的。

下面讀取 Excel 文件,用同樣的方法嘗試是否可行。


import pandas as pd

foo = pd.read_excel(
    "/home/junsircoding/Documents/test.xlsx",
    header=0,
    names=["name"]
)

foo["name"] = foo["name"].str.strip()
print(foo["name"])

結果:

0       amy\n
1       bob\t
2     candy\r
3     dog\r\n
4    fish    
Name: name, dtype: object

0      amy\n
1      bob\t
2    candy\r
3    dog\r\n
4       fish
Name: name, dtype: object

發現同樣的方法無效。

這里需要將特殊字符轉以,或者在字符串前加r前綴。

import pandas as pd

foo = pd.read_excel(
    "/home/junsircoding/Documents/test.xlsx",
    header=0,
    names=["name"]
)
print(foo["name"])

foo["name"] = foo["name"].str.strip(r"\n")
foo["name"] = foo["name"].str.strip(r"\r")
foo["name"] = foo["name"].str.strip(r"\t")
foo["name"] = foo["name"].str.strip(r"\r\n")
foo["name"] = foo["name"].str.strip()
print(foo["name"])

或:

import pandas as pd

foo = pd.read_excel(
    "/home/junsircoding/Documents/test.xlsx",
    header=0,
    names=["name"]
)
print(foo["name"])

foo["name"] = foo["name"].str.strip("\\n")
foo["name"] = foo["name"].str.strip("\\r")
foo["name"] = foo["name"].str.strip("\\t")
foo["name"] = foo["name"].str.strip("\\r\\n")
foo["name"] = foo["name"].str.strip()
print(foo["name"])

結果是符合預期的:

0       amy\n
1       bob\t
2     candy\r
3     dog\r\n
4    fish    
Name: name, dtype: object

0      amy
1      bob
2    candy
3      dog
4     fish
Name: name, dtype: object


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM