Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Apache spark 如何使用pyspark中的两列串联进行过滤_Apache Spark_Pyspark_Apache Spark Sql_Spark Dataframe_Pyspark Sql - Fatal编程技术网

Apache spark 如何使用pyspark中的两列串联进行过滤

Apache spark 如何使用pyspark中的两列串联进行过滤,apache-spark,pyspark,apache-spark-sql,spark-dataframe,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,Pyspark Sql,我已经阅读了拼花地板文件,我想过滤 使用prepared dict的行。数据帧中有两列,分别称为col1和col2,类型为string。我的字典中有一组字符串,我希望在字典中列col1和col2中字符串的串联所在的行。我试过了 df.filterdf['col1']+df['col2']在我的字典中 但是df['col1']+df['col2']似乎不是字符串,即使这是列的类型 我也试过了 df.filterlambda x:x['col1']+df['col2']在我的字典中 这样做的正确方法

我已经阅读了拼花地板文件,我想过滤 使用prepared dict的行。数据帧中有两列,分别称为col1和col2,类型为string。我的字典中有一组字符串,我希望在字典中列col1和col2中字符串的串联所在的行。我试过了

df.filterdf['col1']+df['col2']在我的字典中 但是df['col1']+df['col2']似乎不是字符串,即使这是列的类型

我也试过了

df.filterlambda x:x['col1']+df['col2']在我的字典中
这样做的正确方法是什么?

因此,您的问题有两个部分:

字符串-列串联 使用字典进行过滤 关于第一部分-以下是使用toy dataframe进行字符串-列连接的示例:

spark.version u'2.1.1' 从pyspark.sql.functions导入concat、col、lit df=spark.createDataFrame[foo,1,bar,2],k,v df.show +--+--+ |k|v| +--+--+ |富| 1| |巴| 2| +--+--+ df2=df.selectconcatcolk,lit,colv.alias'joined\u colname' df2.show +-------+ |加入你的名字| +-------+ |富1| |酒吧2| +-------+ 关于第二部分,您需要.isin方法-不确定它是否适用于字典,但它肯定适用于列表['foo 1','foo 2']或集合{'foo 1','foo 2'}:

filtercol'joined_colname'.isin{'foo 1','foo 2'}.show也适用于列表 +-------+ |加入| colname | +-------+ |富1| +-------+ 希望这足够有用

注释后编辑:要将连接的列与初始df的列保持在一起,请执行以下操作:

df3=df.带有列“连接的名称”,concatcolk,lit,colv df3.show +--+--+-------+ |k | v |加入| colname | +--+--+-------+ |福| 1 |福1| |巴| 2 |巴| 2 | +--+--+-------+
因此,您的问题有两个组成部分:

字符串-列串联 使用字典进行过滤 关于第一部分-以下是使用toy dataframe进行字符串-列连接的示例:

spark.version u'2.1.1' 从pyspark.sql.functions导入concat、col、lit df=spark.createDataFrame[foo,1,bar,2],k,v df.show +--+--+ |k|v| +--+--+ |富| 1| |巴| 2| +--+--+ df2=df.selectconcatcolk,lit,colv.alias'joined\u colname' df2.show +-------+ |加入你的名字| +-------+ |富1| |酒吧2| +-------+ 关于第二部分,您需要.isin方法-不确定它是否适用于字典,但它肯定适用于列表['foo 1','foo 2']或集合{'foo 1','foo 2'}:

filtercol'joined_colname'.isin{'foo 1','foo 2'}.show也适用于列表 +-------+ |加入| colname | +-------+ |富1| +-------+ 希望这足够有用

注释后编辑:要将连接的列与初始df的列保持在一起,请执行以下操作:

df3=df.带有列“连接的名称”,concatcolk,lit,colv df3.show +--+--+-------+ |k | v |加入| colname | +--+--+-------+ |福| 1 |福1| |巴| 2 |巴| 2 | +--+--+-------+
无论内容如何,df['col1']和df['col2']都是pyspark.sql.column.column类型,而不是string类型无论内容如何,df['col1']和df['col2']都是pyspark.sql.column.column类型,而不是string类型谢谢。df2=df.selectconcatcolk,lit,colv.alias'joined_colname'是否还维护df的所有其他列?@eleanora您需要使用column调用-请参阅编辑谢谢。df2=df.selectconcatcolk,lit,colv.alias'joined_colname'是否也维护df的所有其他列?@eleanora您需要使用column调用-请参阅编辑