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