我正在尝试将 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'
我将不胜感激任何帮助!
从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)