有没有一种方法可以将PySpark中的描述函数用于多个列



我正试图从PySpark中的数据集获取一些信息,当我将select函数与describe函数结合起来查看三列的详细信息时,结果只显示了最后一列的信息。我使用了一篇文章中的一个简单示例,其中包含以下命令:

my_data.select('Isball', 'Isboundary', 'Runs').describe().show()

它应该向我显示三列的详细信息,但它只向我显示了以下内容:

+-------+------------------+
|summary|              Runs|
+-------+------------------+
|  count|               605|
|   mean|0.9917355371900827|
| stddev| 1.342725481259329|
|    min|                 0|
|    max|                 6|
+-------+------------------+

我应该怎么做才能得到我想要的结果?

describe函数仅适用于文档中所述的数字列和字符串列。

我假设Isball和Isboundary是布尔列,因此看不到它们的描述。您可以将列强制转换为integer以使其工作。

from pyspark.sql.functions import col
df = spark.createDataFrame([
(1, True, "lorem"),
(2, False, "ipsum")
], ["integer_col", "bool_col", "string_col"])
df.describe().show(truncate=0)
+-------+------------------+----------+
|summary|integer_col       |string_col|
+-------+------------------+----------+
|count  |2                 |2         |
|mean   |1.5               |null      |
|stddev |0.7071067811865476|null      |
|min    |1                 |ipsum     |
|max    |2                 |lorem     |
+-------+------------------+----------+

df.withColumn("bool_col", col("bool_col").cast("integer")).describe().show(truncate=0)
+-------+------------------+------------------+----------+
|summary|integer_col       |bool_col          |string_col|
+-------+------------------+------------------+----------+
|count  |2                 |2                 |2         |
|mean   |1.5               |0.5               |null      |
|stddev |0.7071067811865476|0.7071067811865476|null      |
|min    |1                 |0                 |ipsum     |
|max    |2                 |1                 |lorem     |
+-------+------------------+------------------+----------+

最新更新