Python 使用.loc覆盖值

Python 使用.loc覆盖值,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,我想使用此命令有条件地覆盖数据帧中给定列的某些值 enq.dropna().loc[q16.apply(lambda x: x[:3].lower()) == 'oui', q16_] = 'OUI' # q16 = enq[column_name].dropna() 哪个有表格 df.dropna().loc[something == something_else, column_name] = new_value 我没有得到任何错误,但当我检查结果时,我发现没有任何变化 感谢

我想使用此命令有条件地覆盖数据帧中给定列的某些值

enq.dropna().loc[q16.apply(lambda x: x[:3].lower()) == 'oui', q16_] = 'OUI'       # q16 = enq[column_name].dropna()
哪个有表格

df.dropna().loc[something == something_else, column_name] = new_value
我没有得到任何错误,但当我检查结果时,我发现没有任何变化


感谢阅读和帮助。

您的问题是因为dropna()是一个新的数据帧,它是df的副本,您必须分两步执行:

enq.dropna(inplace=True)
enq.loc[q16.apply(lambda x: x[:3].lower()) == 'oui', q16_] = 'OUI'  

您的第一个操作,
dropna
,已经返回了数据帧的副本。所以您没有修改实际的DataFramework非常感谢!我为此苦苦挣扎了好几个小时。在应用了一些操作
之后,链接任何东西都没有任何意义。结果是一个
None
,它不会返回实际的数据帧谢谢您的帮助。考虑到@yatu的评论,我尝试了这个
enq.loc[enq.loc[:,q16.].isna(),q16.]='na_temp'
然后这个
enq.loc[q16.apply(lambda x:x[:3].lower())='oui',q16.]='oui'
,它成功了