有没有办法在PySpark中对多个列使用describe函数?

to94eoyn  于 2022-11-21  发布在  Spark
关注(0)|答案(1)|浏览(175)

我试图从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|
+-------+------------------+

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

hc2pp10m

hc2pp10m1#

describe函数仅适用于数字列和字符串列,如文档中所述。
我假设Isball和Isboundary是布尔列,因此它们的描述是看不到的。你可以将这些列转换为整数。

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     |
+-------+------------------+------------------+----------+

相关问题