概述:
我从网站上删除了一些数据,放入Pandas DataFrame但由于某种原因,我似乎无法将数据类型从Object转换为Integer或Float(就此而言,很好)。
我已经浏览了几篇帖子,谢天谢地帮助我到了这里,但出于某种原因,我尝试的所有内容似乎都没有用到
数据集的示例:
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()的无效文字:
这最后一个在过去有效,但出于某种原因,它并没有在这个数据集上工作。
有什么想法吗?
谢谢, 阿德里安
答案 0 :(得分:1)
我认为您首先需要转义值$
,然后使用,
替换为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)
int32