簡體   English   中英

如何從列名中刪除非 ASCII 字符和空格

[英]How to remove non-ASCII characters and space from column names

我有一個數據框。 許多列名包含非 ASCII 字符特殊字符,如 ()、/、+、. (中間的非 ascii 點)等和非 ascii 空格 讀取 csv 時沒有發生這種情況 是由於單熱編碼而發生的。 (當我將分類變量轉換為數字列時,類別值具有非 ascii 值)

df

Col1/name   Col 2() name    Col3 + name    Col4 ^¨ name   etc...

預期輸出

只想要列名中的數字、下划線和字符(我只想更改列名,而不是數據框或行中的任何值)。 這是必要的,因為一些機器學習算法(例如 lightGBM)不適用於列名稱中的非 ASCII 字符或非 ASCII 空格。

預期輸出 df:

Col1name   Col_2_name    Col3__name    Col4__name   etc...

所以用下划線替換空格並刪除列名中的任何非數字和非字符。

使用pandas.Series.str.replacefindall一種方法:

df.columns = ["".join(l) for l in df.columns.str.replace("\s", "_").str.findall("[\w\d]+")]
print(df)

輸出:

Empty DataFrame
Columns: [Col1name, Col_2_name, Col3__name, Col4__name]
Index: []

您可以使用方法replace

df.columns.str.replace('\s+', '_').str.replace('\W+', '')

輸出:

Index(['Col1name', 'Col_2_name', 'Col3__name', 'Col4__name'], dtype='object')

您可以使用str.replace('_{2,}', '_')刪除多個下划線。

暫無
暫無

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

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