python - 如何从列名中删除非 ASCII 字符和空格

标签 python pandas multiple-columns

我有一个数据框。许多列名称包含非 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: []

关于python - 如何从列名中删除非 ASCII 字符和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60559671/

相关文章:

python - 属性错误 : 'QuantumCircuit' object has no attribute 'config'

python - 如何快速创建一个 numpy 或 pandas 二维数组,其中两个轴都在一个范围内并且值是一个产品?

python - 如何从 Dataframe 对象字段中提取日期值

html - 如何在当前编码中添加第三列?

r - 在 R 中生成具有定义参数的表

python - mysql 向表中插入重复值

python - 为什么用户输入的 Traitsui 中的属性不更新

python - 如何使用 Pandas 从 CSV 文件夹生成自定义主数据框?

Pandas 使用具有多个参数的函数进行聚合

r - 如果满足条件,如何从另一个数据框列中减去数据框列?