Python 使用numpy.where向数据帧输入值

Python 使用numpy.where向数据帧输入值,python,numpy,Python,Numpy,我正在尝试根据条件向dataframe输入值。我有电影属性栏,如“AttributeHorror”或“AttributeRomance”等。栏中填充NaN。如果满足条件,则必须将其更换为1。如果没有,则为0 我尝试了以下代码,但没有返回正确的结果 胶片数据['AttributeLomumSuz'] =np.其中film_数据['FilmAttributes1']=='Olumsuz','1','0' 胶片数据['AttributeSiddet']=np。其中胶片数据['FilmAttribute

我正在尝试根据条件向dataframe输入值。我有电影属性栏,如“AttributeHorror”或“AttributeRomance”等。栏中填充NaN。如果满足条件,则必须将其更换为1。如果没有,则为0

我尝试了以下代码,但没有返回正确的结果

胶片数据['AttributeLomumSuz'] =np.其中film_数据['FilmAttributes1']=='Olumsuz','1','0' 胶片数据['AttributeSiddet']=np。其中胶片数据['FilmAttributes1']=='Siddet','1','0' 胶片数据['AttributeAltyazi']= np.其中Film_数据['FilmAttributes1']=='Altyazili','1','0' 胶片数据['AttributeGrilim']= 其中film_data['FilmAttributes1']=='Gerilim','1','0' 此代码填充的每个单元格都不正确。我哪里出错了?

如果numpy.Where不起作用

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

第一种可能的解决办法:

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

第二种可能的解决办法:

也可以使用.map方法

错误条目的映射结果为NaN,如果您不喜欢,可以使用fillna,参数等于您喜欢的任何值:

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

简单的列表理解应该可以

分为两部分:

1迭代原始值

2列表理解条件赋值

这些在下面的代码中有注释

胶片数据['AttributeLomumSuz']=[ “1”如果v==“olumsuz”否则“0”2请在此处列出条件赋值 对于胶片中的v_数据['FilmAttributes1']1,在此处迭代原始值 ]
你能解释一下这怎么不正确吗?你得到了什么而不是你期望的结果?它填充了0或1,没关系。但它们不是预期的价值计数。我原以为它可能会在同一个单元格上重写,但我无法从中获得数据帧的一个片段和预期的输出,因此我们可以解决这个问题:让我更改我的答案,然后再试一次谢谢你的解决方案。用你的密码,我理解我的错误。实际上,我有6个属性,像'FilmAttributes2','FilmAttributes3',它们的代码与上面相同。他们每次更新AttributeLomSuz列。所以我的问题是,我可以添加'elseif'条件吗,就像elseif v=!0或v=1.我试过了,但返回时出错了。
df['Tagger_Column'].fillna(value = '0') # to replicate your condition in numpy.where() above