首页 > 解决方案 > 使用 numpy.where 向数据框输入值

问题描述

我正在尝试根据条件将值输入数据框。我有电影属性列,例如“AttributeHorror”或“AttributeRomance”等。列中填充了 NaN。如果满足条件,则必须替换为 1。如果不满足,则为 0。

我尝试了以下代码,但它没有返回正确。


film_data['AttributeOlumsuz'] 
       =np.where(film_data['FilmAttributes1']=='Olumsuz', '1', '0')


film_data['AttributeSiddet'] = np.where(film_data['FilmAttributes1']=='Siddet', '1', '0')


film_data['AttributeAltyazi'] = 
np.where(film_data['FilmAttributes1']=='Altyazili', '1', '0')

film_data['AttributeGerilim'] = 
np.where(film_data['FilmAttributes1']=='Gerilim', '1', '0')

此代码填充每个单元格不正确。我在哪里犯错?

标签: pythonnumpy

解决方案


一个简单的列表理解应该可以工作。

有两个部分:

1) 迭代原始值

2) 列表理解条件赋值

这些在下面的代码中进行了注释。

film_data['AttributeOlumsuz'] = [
    '1' if v=='olumsuz' else '0' #2 list comprehension conditional assignment here
    for v in film_data['FilmAttributes1'] #1 iterate over original values here
]

推荐阅读