首页 > 解决方案 > 如何替换数据框中的 * 字符?

问题描述

我正在尝试自动转换在其中一列中包含 * 字符而不是空值的源文件(我不知道他们为什么这样做)。

我有类似的数据,我想删除 * 并在 COL_2 中有空值

COL_1 | COL_2

XYZ   | *

XYZ   | 123

读取数据如

df = pd.read_csv(my_file, names=["COL_1"],["COL_2"], header=0)

做替换

df['COL_2'] = df.['COL_2'].replace('*', '', regex=True)

我收到类似的错误

line XXX, in <module> df['COL_2'] = df.['COL_2'].replace('*', '', regex=True)

line XXX, in replace return super().replace(

谢谢和抱歉,如果有人问到我找不到它的地方。

编辑:问题是传递正则表达式参数,我在所有其他 df.replace 行中一直作为字符串替换。* 是一个特殊字符,应该只是 df.replace 因为它是完全匹配而不是字符串替换,正则表达式不适用于该特殊字符。

标签: pythonpandas

解决方案


import pandas as pd
d = {'COL_1': ['XYZ', 'XYZ'], 'COL_2': ['*', '123']}
df = pd.DataFrame(data=d)
df
Out[3]: 
  COL_1 COL_2
0   XYZ     *
1   XYZ   123

你只需要用 str 方法替换。

df['COL_2'] = df['COL_2'].str.replace('*','')
df
Out[8]: 
  COL_1 COL_2
0   XYZ      
1   XYZ   123

推荐阅读