我有一个PySpark Dataframe,它有两列Id和rank,
+---+----+
| Id|Rank|
+---+----+
| a| 5|
| b| 7|
| c| 8|
| d| 1|
+---+----+
Run Code Online (Sandbox Code Playgroud)
对于每一行,如果Rank大于5,我希望用"other"替换Id.
如果我使用伪代码来解释:
For row in df:
if row.Rank>5:
then replace(row.Id,"other")
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的,
+-----+----+
| Id|Rank|
+-----+----+
| a| 5|
|other| 7|
|other| 8|
| d| 1|
+-----+----+
Run Code Online (Sandbox Code Playgroud)
任何线索如何实现这一目标?谢谢!!!
要创建此Dataframe:
df = spark.createDataFrame([('a',5),('b',7),('c',8),('d',1)], ["Id","Rank"])
Run Code Online (Sandbox Code Playgroud) apache-spark apache-spark-sql pyspark spark-dataframe pyspark-sql
我是 PySpark 的新手。
我有一个DataFrame
df
包含“device_type”列的 Spark 。
我想将“平板电脑”或“电话”中的每个值替换为“电话”,并将“PC”替换为“桌面”。
在 Python 中,我可以执行以下操作,
deviceDict = {'Tablet':'Mobile','Phone':'Mobile','PC':'Desktop'}
df['device_type'] = df['device_type'].replace(deviceDict,inplace=False)
Run Code Online (Sandbox Code Playgroud)
如何使用 PySpark 实现这一目标?谢谢!
我有一个数据帧df创建如下,
schema = StructType([StructField('Id', StringType(), False),
StructField('Value', FloatType(), False)])
df = spark.createDataFrame([('a',5.0),('b',1.0),('c',-0.3)],schema)
Run Code Online (Sandbox Code Playgroud)
看起来像
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| -0.3|
+---+-----+
Run Code Online (Sandbox Code Playgroud)
现在我想取"值"的绝对值,它应该返回
+---+-----+
| Id|Value|
+---+-----+
| a| 5.0|
| b| 1.0|
| c| 0.3|
+---+-----+
Run Code Online (Sandbox Code Playgroud)
我试过了
df = df.withColumn('Value',math.fabs(df.Value))
Run Code Online (Sandbox Code Playgroud)
但它抱怨TypeError:需要一个浮点数.但是,Value列是使用FloatType()指定的.
有关如何正确执行此操作的任何线索?谢谢!
这里我创建了一个dateframe,如下所示,
df = spark.createDataFrame([('a',5,'R','X'),('b',7,'G','S'),('c',8,'G','S')],
["Id","V1","V2","V3"])
Run Code Online (Sandbox Code Playgroud)
看起来像
+---+---+---+---+
| Id| V1| V2| V3|
+---+---+---+---+
| a| 5| R| X|
| b| 7| G| S|
| c| 8| G| S|
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)
我想添加一个由V1,V2,V3组成的元组列.
结果应该是这样的
+---+---+---+---+-------+
| Id| V1| V2| V3|V_tuple|
+---+---+---+---+-------+
| a| 5| R| X|(5,R,X)|
| b| 7| G| S|(7,G,S)|
| c| 8| G| S|(8,G,S)|
+---+---+---+---+-------+
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用与Python类似的syntex,但它不起作用:
df.withColumn("V_tuple",list(zip(df.V1,df.V2,df.V3)))
Run Code Online (Sandbox Code Playgroud)
TypeError:zip参数#1必须支持迭代.
任何帮助,将不胜感激!
python apache-spark apache-spark-sql pyspark spark-dataframe