我有一个大的矩阵导入文件,可以再增加5万行(.csv)。
我正在使用panda和numpy,矩阵是电影数据库,我想添加一个新的条件列。
矩阵列之一是流派,一个字符串是不同流派,我想创建一个新的列调用“ Drama_yes_or_no”,并用一个条件评估该列,如果列中包含“ Drama”的字符串写为1。 / p>
我正在尝试使用此代码,但出现此错误。 (“类型为'float'的参数不可迭代”,u'出现在索引424'上)
def dram_genres(passenger):
original_title, genres = passenger
#if genres.find('Drama') != -1:
if "Drama" in genres:
return 'Drama'
else:
return 'Not Drama'
# adds new column to dataframe specifying if the film is good/bad
IMDb_data['Drama_or_not'] = IMDb_data[['original_title', 'genres']].apply(dram_genres, axis=1)
IMDb_data[['original_title', 'genres', 'budget','vote_average','Drama_or_not']].head(7)
能帮我吗?
预先感谢
答案 0 :(得分:0)
如果我对您的理解正确,则可以使用pandas str处理方法执行相同的代码:
df = pd.DataFrame({'genre':['Action', 'Drama', 'Drama ',
' Drama', 'Western', 'Other Drama', 10]})
df['Drama_or_not'] = df['genre'].str.find('Drama')>0
这也应该解决您的错误:
“'float'类型的参数不可迭代”。
我想您的第四行会出现此错误,因为genres
是一个浮点数,而不是一个可迭代的对象(例如,字符串或列表)。
但是,如果在只用于字符串的列中有浮点值,则应小心谨慎-您应该优先清理并检查数据,以便理解为什么会这样。