首页 > 解决方案 > 与列交互的数据框行上的 Lambda

问题描述

我正在尝试将此应用于我的数据框:对于每一行:

等等。我正在尝试使用 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)

但当然是行不通的。有没有办法做类似的事情?如果不是,我可以逐列应用迭代逻辑,但我想知道是否有更快的方法来做到这一点。

谢谢

标签: pythonpandaslambda

解决方案


可能是这样的(最好总是发布一些样本数据进行测试):

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'])

推荐阅读