Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用从另一列获取相应值的多个条件更新列_Python_Sql_Pandas_Dataframe - Fatal编程技术网

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

Python 如何使用从另一列获取相应值的多个条件更新列,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,输出更像下面的SQL语句 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表(和dataframe)中的所有单独列 如果我想将此SQL语句转换为python中的pandas操作,这将更像: df['div_3'] = (df.cs+df.fhfa+df.sz) /3 df['final']

输出更像下面的SQL语句

   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表(和dataframe)中的所有单独列

如果我想将此SQL语句转换为python中的pandas操作,这将更像:

   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']
但这并不能保证“对应的值”最终被放入。如何做到这一点

我真的需要用3列的总和创建另一列div_3吗?这可以在不创建其他列的情况下完成吗?

IIUC:

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

.all(1)
-与
.all(axis=1)
相同,这意味着-每行中的所有值必须
为True
pd.Series.notnull
上进行筛选,并调用
mean

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

我认为这很卑鄙ᴏʟᴅsᴘᴇᴇᴅ, 是的,我现在注意到了。但是如果我用它的话——它会和你的答案太相似了……;-)啊哈,没问题。你找到了另一种方法,仍然像往常一样找到了答案。希望我能接受这两个答案:)。谢谢大家,但请解释所有(1),括号1是什么means@Viv就我个人而言,就像cᴏʟᴅsᴘᴇᴇᴅ'让我们回答更多;-)