概述:
我已经从一个网站上删除了一些数据,放入了Pandas DataFrame,但由于某些原因,我似乎无法将数据类型从一个对象转换为整数或浮动(就这一点而言,两者都很好)。
我看了几篇文章,感谢地帮助我来到这里,但出于某种原因,我尝试的每一件事似乎都不起作用
数据集的示例:
Condition_Type State Price Year Make Model
In Stock SA $24,654 2017 Mazda 3
Used Car VIC $23,162 2016 Holden Trax
Used Car VIC $15,777 2011 Volkswagen Tiguan
Used Car VIC $12,634 2012 Volkswagen Polo
In Stock VIC $70,501 2017 Volkswagen Amarok到目前为止我所尝试的:
df["Price"] = df["Price"].str.replace("$","").astype(int)ValueError:带基数10的int()的无效文本:
df["Price"] = df["Price"].astype(str).astype(int)ValueError:带基数10的int()的无效文本:
pd.Series(df["Price"]).convert_objects(convert_numeric=True)FutureWarning:不推荐convert_objects。使用数据类型特定的转换器pd.to_datetime、pd.to_timedelta和pd.to_numeric.
pd.to_numeric(df["Price"], errors='coerce')返回NaN
pd.to_numeric(df["Price"], errors='ignore')值作为对象保留。
df["Price"] = df["Price"].astype(np.int64, inplace=True)ValueError:带基数10的int()的无效文本:
最后一种方法在过去已经起作用了,但由于某种原因,它不适用于这个数据集。
有什么想法吗?
谢谢禤浩焯
发布于 2017-09-05 13:02:11
我认为您首先需要转义值$,然后用,替换为用Series.replace空字符串。
df["Price"] = df["Price"].replace(["\$", ','],"", regex=True).astype(int)
print (df)
Condition_Type State Price Year Make Model
0 In Stock SA 24654 2017 Mazda 3
1 Used Car VIC 23162 2016 Holden Trax
2 Used Car VIC 15777 2011 Volkswagen Tiguan
3 Used Car VIC 12634 2012 Volkswagen Polo
4 In Stock VIC 70501 2017 Volkswagen Amarok
print (df['Price'].dtypes)
int32https://stackoverflow.com/questions/46055635
复制相似问题