python - 与列交互的数据框行上的 Lambda
问题描述
我正在尝试将此应用于我的数据框:对于每一行:
- 如果行['colA']=='NONE' 那么行['colA']=row['colX']
- elif row['colA']!='NONE' & row['colB']=='NONE' 然后 row['colB']=row['colX']
等等。我正在尝试使用 lambda 函数来执行此操作,以便:
dataframe.apply(lambda row: row['colA']=row['result'] if row['colA']=='NONE' else (row['colB']=row['result'] if row['colA']!='NONE' & row['colB']!='NONE'),axis=0)
但当然是行不通的。有没有办法做类似的事情?如果不是,我可以逐列应用迭代逻辑,但我想知道是否有更快的方法来做到这一点。
谢谢
解决方案
可能是这样的(最好总是发布一些样本数据进行测试):
df=df.replace('NONE',np.nan)
df['colA']=df['colA'].fillna(df['colX'])
df['colB']=np.where(df['colA'].notnull()&df['colB'].isnull(),df['colB'].fillna(df['colX']),df['colB'])
#alternative for above line->
#df.loc[df.colA.notnull()&df.colB.isnull(),'colB']=df.loc[df.colA.notnull()&df.colB.isnull(),'colB'].fillna(df['colX'])