为什么Pandas的replace()方法不起作用?

问题描述 投票:0回答:1

我正在尝试将 df 中的所有列替换为整数价格,但是由于某种原因,replace() 方法不起作用:

df = pd.read_csv(f_name, dtype="string")
df = df[df.columns.dropna()]
df[cols_int] = df[cols_int].replace({"[\$]": "", "[,]": ""}, regex=True)
df[cols_int] = df[cols_int].astype(int)

错误:

ValueError: invalid literal for int() with base 10: '$499,000'

我将不胜感激任何帮助!

python python-3.x pandas dataframe replace
1个回答
4
投票

从pandas 1.3开始,这个错误应该不再出现了。


如果您仍在使用 pandas <1.3, this bug 是由“字符串”dtype 引起的,所以请使用

dtype=str
dtype="str"
代替:

df = pd.read_csv(f_name, dtype=str)
#                              ---
df = df[df.columns.dropna()]
df[cols_int] = df[cols_int].replace({"[\$]": "", "[,]": ""}, regex=True)
df[cols_int] = df[cols_int].astype(int)
© www.soinside.com 2019 - 2024. All rights reserved.