我有一个数据集,其中一列是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
方法。假设您的cars
是DataFrame
,您可以尝试在单个单元格上迭代方法。str
在DataFrame
s
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
符合我在这里假设的格式,或者用进一步的细节扩展你的问题。