【发布时间】:2019-12-13 07:51:05
【问题描述】:
我有一个汽车数据集,必须训练一个模型来预测汽车的价格,但我的疑问在于数据清洗。以下是数据框 car_df 中存在的列:
Data columns (total 17 columns):
Id 53515 non-null int64
Maker 53515 non-null object
model 53515 non-null object
Location 53515 non-null object
Distance 52304 non-null float64
Owner Type 53515 non-null object
manufacture_year 53515 non-null int64
Age of car 53515 non-null int64
engine_displacement 53515 non-null int64
engine_power 52076 non-null float64
body_type 4136 non-null object
Vroom Audit Rating 53515 non-null int64
transmission 53515 non-null object
door_count 53515 non-null object
seat_count 53515 non-null object
fuel_type 53515 non-null object
Price 53515 non-null float64
dtypes: float64(3), int64(5), object(9)
door_count 和 seat_count 列包含我想用数值替换的术语“无”。我的算法: 如果对于特定的 Maker、model 组合,door_count 为“None”,则用 Maker、model 组合的 door_count 的中值填充它。 例如,如果 Maker 是 Skoda,model 是 Octavia,则算法会找到 door_count 的中位数并填充 none 值。
这是我尝试实现的代码sn-p:
def find_door_count(Maker, model):
car_df_temp = car_df[car_df['door_count']!='None']
car_df_temp['door_count'] = car_df_temp['door_count'].astype('int64')
ans = car_df_temp[(car_df_temp['Maker']==Maker) & (car_df_temp['model']==model)]['door_count'].median()
return ans
car_df['door_count'].apply(lambda row: find_door_count(row['Maker'], row['model']))
在运行上面的 sn-p 时,我收到以下错误:
----> 1 car_df['door_count'].apply(lambda row: find_door_count(row['Maker'], row['model']))
TypeError:字符串索引必须是整数
你能告诉我哪里出错了吗?
【问题讨论】:
-
制作一个小型示例数据集并添加预期输出,以便我们直观地看到您想要做什么。询问您的问题,我们可以提供解决方案,而不是为什么您的代码无法正常工作,请查看What is the XY problem?
-
但这可能会帮助您解决问题,尽管您的代码不是解决此问题的熊猫方式:
car_df_temp['door_count'] = car_df_temp['door_count'].astype(int)。所以只需int而不是'int64'