Python |熊猫|对象|转换为整数或浮点数

时间:2017-09-05 13:00:29

标签: python pandas object types integer

概述:

我从网站上删除了一些数据,放入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()的无效文字:

这最后一个在过去有效,但出于某种原因,它并没有在这个数据集上工作。

有什么想法吗?

谢谢, 阿德里安

1 个答案:

答案 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