如何使用多个条件更新列,并从另一列中获取相应的值Python Pandas

问题描述:

输出更像下面的SQL语句。如何使用多个条件更新列,并从另一列中获取相应的值Python Pandas

UPDATE table_A SET final=(cs+fhfa+sz)/3 WHERE cs IS NOT NULL AND fhfa IS NOT NULL AND sz IS NOT NULL; 

这里CS + FHFA + SZ是在SQL表(在数据帧)

如果我想这个SQL语句在Python大熊猫操作转换,这将是更喜欢所有单个的列:

df['div_3'] = (df.cs+df.fhfa+df.sz) /3 
    df['final'] = df.loc[(df['cs'] != None) & (df['fhfa'] != None) & (df['sz'] != None) ] = df['div_3'] 

但是,这并不能保证最终放入“相应的值”。如何实现这一点??

我真的需要创建另一列div_3所有3列的总和?这可以做到没有另一列创建?

过滤并调用mean

c = ['cs', 'fhfa', 'sz'] 
df['final'] = df[df[c].notnull().all(1)][c].mean(1) 

IIUC:

df.loc[:, 'final'] = df.loc[df[['cs','fhfa','sz']].notnull().all(1), ['cs','fhfa','sz']].sum(1)/3 

.all(1) - 是相同的.all(axis=1),这意味着 -每行中的所有值都必须在pd.Series.notnullTrue

+1

我认为这是有意义的。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ,是的,我现在已经注意到了。但是,如果我会使用它 - 它会太类似于你的答案... ;-) – MaxU

+0

啊哈,没问题。你一如既往地找到了另一条路,并且仍然找到了答案。 –