我想修改当前为空的数据框列(Age)的单元格值,并且仅当另一列(Survived)的对应行的值为0(年龄为空)时才这样做。如果在“存活”列中为1,但在“年龄”列中为空白,那么我将其保留为null。
我尝试使用&&
运算符,但没有用。这是我的代码:
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
有什么建议如何处理吗?谢谢。
错误信息:
SyntaxError: invalid syntax
File "<ipython-input-33-3e691784411c>", line 1
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
^
SyntaxError
由于Python没有&&
运算符,因此会出现错误异常。它具有and
,&
而后者是在上面创建布尔表达式的正确选择Column
(|
对于逻辑析取和~
逻辑求反)。
您创建的条件也是无效的,因为它不考虑运算符的优先级。&
在Python中,优先级高于,==
因此必须在表达式中加上括号。
(col("Age") == "") & (col("Survived") == "0")
## Column<b'((Age = ) AND (Survived = 0))'>
顺便说一句,when
函数等效于case
表达式notWHEN
子句。仍然适用相同的规则。连词:
df.where((col("foo") > 0) & (col("bar") < 0))
析取:
df.where((col("foo") > 0) | (col("bar") < 0))
当然,您可以单独定义条件以避免使用括号:
cond1 = col("Age") == ""
cond2 = col("Survived") == "0"
cond1 & cond2
问题内容: 例如,我对我的书籍清单有动态过滤器,可以在其中设置特定的颜色,作者和类别。该过滤器可以一次设置多种颜色,也可以设置多种类别。 如何有条件地添加“ where”? 问题答案: 如您在API文档中所见,collection()方法返回一个CollectionReference。CollectionReference扩展了Query。Query.where()和Query.orderBy()
问题内容: 我目前有一个查询,它将根据我想使用的任何条件从数据库中提取一堆信息。 如果参数=’‘,我希望能够删除注释部分并仅显示所有行 例如,如果我使用它,它将按该参数搜索,如果我使用它,将按该参数搜索。 我已经尝试使用以下方法和其他一些尝试,但是进展并不很快。 问题答案: 您可能需要考虑构建查询。
问题内容: 我正在尝试获取id = 3或id = 9或id = 100的内容…请记住,我可以拥有几百个这些ID。 编写查询的最有效方法是什么? 问题答案:
我有这个代码: 它需要一个输入来填充,所以一个特定的按钮得到一个类添加。现在我想要检查多个输入,如果它们都被填充而不是空的,我想要添加类“UK-Button-Success”到一个按钮。 我试过的其他方法都不起作用。 我该怎么做?
问题内容: 我今天输入了错误的查询,但它仍然有效,并给出了预期的结果。我的意思是运行此查询: 但是我不小心跑了这个查询 (请注意,而不是最后一个子句中的) 并且都从用户ID返回了正确的员工ID。 这两个查询有什么区别?第二种形式是否仅联接满足条件的2个表的成员,而第一种形式将联接整个表,然后运行查询?一个效率比另一个效率高吗?还有其他我想念的东西吗? 谢谢! 问题答案: 对于这样的内部联接,它们在
问题内容: 假设我想要一个JasperReport,它可以让用户根据需要过滤日期。SQL如下: 现在,如果他们没有传递日期,我不想按某个日期进行过滤。我发现了人们使用的以下错误信息: 并使用以下默认值定义参数: 这无法正常工作,因为不会以我的SQL Server可以理解的格式输出日期。我想让条件条件仍然与jdbc驱动程序一起使用一条准备好的语句,并将参数扔进去,我只希望准备好的语句依赖于该参数是否