在矩阵中添加新的条件列

时间:2019-02-25 08:45:19

标签: python

我有一个大的矩阵导入文件,可以再增加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)

能帮我吗?

预先感谢

1 个答案:

答案 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是一个浮点数,而不是一个可迭代的对象(例如,字符串或列表)。

但是,如果在只用于字符串的列中有浮点值,则应小心谨慎-您应该优先清理并检查数据,以便理解为什么会这样。