Pyspark圆形功能的麻烦

时间:2017-11-01 01:15:30

标签: apache-spark pyspark apache-spark-sql spark-dataframe pyspark-sql

在pyspark中使用round函数时遇到一些麻烦 - 我有以下代码块,我试图将new_bid列舍入到2位小数,并将列重命名为{ {1}}之后 - 我导入bid以供参考,并使用其中包含的pyspark.sql.functions AS func函数:

 
round

这里的output = output.select(col("ad").alias("ad_id"), col("part").alias("part_id"), func.round(col("new_bid"), 2).alias("bid")) 列是float类型 - 结果数据框没有新命名的new_bid列四舍五入到我想要的小数位,而是它仍然是8或9小数位。

我尝试了各种各样的事情,但似乎无法让结果数据框具有舍入值 - 任何指针都会非常感激!谢谢!

1 个答案:

答案 0 :(得分:11)

以下是一些使用某些玩具数据的方法:

 
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<title>The Clay Oven Pizzeria</title>
</head>
  <header>
    <div class="header">
      <img src="images/pizzalogo.jpg" alt="logo"/>
      <h1> The Clay Oven Pizzeria</h1>
    </div>
    <br><br>
    <div class="nav">
      <ul>
        <li><a class="active" href="#index"> Home </li>
        <li><a href="#menu">Menu</li>
        <li><a href="#about">About</li>
        <li><a href="#about">Contact Us</li>
        <li><a href="#signup">Sign Up</li>
      </ul>
    </div>
  </header>
<body>
</body>
</html>

这是个人品味,但我对spark.version # u'2.2.0' import pyspark.sql.functions as func df = spark.createDataFrame( [(0.0, 0.2, 3.45631), (0.4, 1.4, 2.82945), (0.5, 1.9, 7.76261), (0.6, 0.9, 2.76790), (1.2, 1.0, 9.87984)], ["col1", "col2", "col3"]) df.show() # +----+----+-------+ # |col1|col2| col3| # +----+----+-------+ # | 0.0| 0.2|3.45631| # | 0.4| 1.4|2.82945| # | 0.5| 1.9|7.76261| # | 0.6| 0.9| 2.7679| # | 1.2| 1.0|9.87984| # +----+----+-------+ # round 'col3' in a new column: df2 = df.withColumn("col4", func.round(df["col3"], 2)).withColumnRenamed("col4","new_col3") df2.show() # +----+----+-------+--------+ # |col1|col2| col3|new_col3| # +----+----+-------+--------+ # | 0.0| 0.2|3.45631| 3.46| # | 0.4| 1.4|2.82945| 2.83| # | 0.5| 1.9|7.76261| 7.76| # | 0.6| 0.9| 2.7679| 2.77| # | 1.2| 1.0|9.87984| 9.88| # +----+----+-------+--------+ # round & replace existing 'col3': df3 = df.withColumn("col3", func.round(df["col3"], 2)) df3.show() # +----+----+----+ # |col1|col2|col3| # +----+----+----+ # | 0.0| 0.2|3.46| # | 0.4| 1.4|2.83| # | 0.5| 1.9|7.76| # | 0.6| 0.9|2.77| # | 1.2| 1.0|9.88| # +----+----+----+ col都不是很有趣 - 我更喜欢aliaswithColumn。不过,如果你想坚持使用withColumnRenamedselect,那么你应该如何调整自己的代码片段:

col

PS为您的问题以及任何相关的导入提供一些样本数据和期望的结果总是一个好主意 - 请参阅How do I ask a good question?

相关问题