使用numpy.wh向数据帧输入值

2024-10-04 09:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试根据一个条件向数据帧输入值。我有电影属性栏,如'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')

此代码填充的每个单元格都不正确。我哪里出错了


Tags: 数据代码data属性电影npnanwhere
2条回答

简单的列表理解应该有用

有两个部分:

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
]

如果numpy.where()不起作用

假设您正在使用pandas.DataFrame读取数据,您可以尝试:

第一种可能的解决方案:

df.loc[df['AttributeOlumsuz'] == 'Olumsuz', 'Tagger_Column'] = '1'

第二种可能的解决方案:

也可以使用.map()方法

your_dict = {'Olumsuz': '1'}
df['Tagger_Column'] = df['AttributeOlumsuz'].map(your_dict)

对于False条目,map的结果是NaN,如果您不喜欢,可以使用fillna,参数等于您想要的任何值:

df['Tagger_Column'].fillna(value = '0') # to replicate your condition in numpy.where() above

相关问题 更多 >