如何将具有分类值的属性的值转换为整数类型?



我有一个数据集,其中一列是Ex-Showroom_Price,我试图将其值转换为整数,但我得到一个错误。

import pandas as pd
#reading the dataset
cars = pd.read_csv('cars_engage_2022.csv')
cars["Ex-Showroom_Price"]  = int(cars["Ex-Showroom_Price"] .split()[-1].replace(',',''))

错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-40-d65bfedf76a4> in <module>
----> 1 cars["Ex-Showroom_Price"]  = int(cars["Ex-Showroom_Price"] .split()[-1].replace(',',''))
TypeError: 'int' object is not subscriptable

Ex-Showroom_Price的取值:

Rs. 2,92,667
Rs. 2,36,447
Rs. 2,96,661
Rs. 3,34,768
Rs. 2,72,223
:

首先将string拆分为list

df["cars-list"] = df['Ex-Showroom_Price'].str.split()

然后去掉逗号(',')。

df["cars-int"] = df["cars-list"].apply(lambda x: x[-1].replace(',','') )

然后转换成int

df["cars-int"] = df["cars-int"].astype(int)

您正在尝试对数据数组使用str方法。假设您的carsDataFrame,您可以尝试在单个单元格上迭代方法。strDataFrames

data = ["Rs. 2,92,667", "Rs. 2,36,447", "Rs. 2,96,661", "Rs. 3,34,768", "Rs. 2,72,223"]
cars = pd.DataFrame(data, columns=['Ex-Showroom_Price'])
cars["Ex-Showroom_Price"] = cars["Ex-Showroom_Price"].str.replace(r'.* ([d,]+)+$', r'1').str.replace(',', '').astype('int32')

我在这里使用了正则表达式,为了简单起见,我保留了','替换,但您可以将它们合并为一个。

注意:上面的代码运行得很好,但是正如@martineau指出的,您得到的错误似乎与数据的格式有关。请确保data符合我在这里假设的格式,或者用进一步的细节扩展你的问题。

相关内容

  • 没有找到相关文章

最新更新