python - 如何替换数据框中的 * 字符?
问题描述
我正在尝试自动转换在其中一列中包含 * 字符而不是空值的源文件(我不知道他们为什么这样做)。
我有类似的数据,我想删除 * 并在 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 因为它是完全匹配而不是字符串替换,正则表达式不适用于该特殊字符。
解决方案
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
推荐阅读
- java - 尽管存在依赖项,但 Gradle 无法编译注释
- java - 使用循环检查数组中的每个元素并返回 true 或 false
- git - 为什么 .gitconfig 总是引用 /emacs?
- if-statement - 将字符串(“+”)插入命名范围合并单元格,但前提是为空
- python - 该数字在 postgresql 中四舍五入
- reactjs - 在 Next.js 中使用 JavaScript 加载外部脚本
- if-statement - Tableau:特定维度/ COUNTD IF 语句的总数百分比
- java - 对对象的 ArrayList 使用 indexOf() 方法
- javascript - Firebase 根据孙子的值检索文档,该值是一个集合
- c++ - CreateDxgiSurfaceRenderTarget 继续失败