为什么我的Dataframe列表达式不起作用?

时间:2018-12-02 18:31:32

标签: pyspark

在我这样做的时候给出一个DataFrame .php

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script src="http://malsup.github.com/jquery.form.js"></script> <script> $(document).ready(function(){ mailTab.alert('Test'); }); </script> ,我得到结果

df

但是,当我df.select(df['category_id']+1000)时,得到>>> df.select(df['category_id']).limit(3).show() +-----------+ |category_id| +-----------+ | 1| | 2| | 3| +-----------+ >>> df.select(df['category_id']+1000).limit(3).show() +--------------------+ |(category_id + 1000)| +--------------------+ | 1001| | 1002| | 1003| +--------------------+

df.select(df['category_name']+ ' blah')

只是想知道是什么使一个起作用而另一个不起作用?我想念什么?

1 个答案:

答案 0 :(得分:1)

与python不同,+运算符未在spark中定义为字符串连接(而sql也没有这样做),而是将concat/concat_ws用于字符串连接。

import pyspark.sql.functions as f

df.select(f.concat(df.category_name, f.lit('blah')).alias('category_name')).show(truncate=False)
#+-----------------------+
#|category_name          |
#+-----------------------+
#|Footballblah           |
#|Soccerblah             |
#|Baseball & Softballblah|
#+-----------------------+

df.select(f.concat_ws(' ', df.category_name, f.lit('blah')).alias('category_name')).show(truncate=False)
#+------------------------+
#|category_name           |
#+------------------------+
#|Football blah           |
#|Soccer blah             |
#|Baseball & Softball blah|
#+------------------------+