我有一個datafram命名爲訂單,從csv文件加載,而days_since_prior_order列有一些空白值。爲什麼pyspark中的datafram的最大值不正確?
orders = spark.read.csv("/Users/yanan.chen/Downloads/instacart/orders.csv",header=True)
orders.createOrReplaceTempView("orders")
spark.sql("select * from orders limit 30").show()
+--------+-------+--------+------------+---------+-----------------+----------------------+
|order_id|user_id|eval_set|order_number|order_dow|order_hour_of_day|days_since_prior_order|
+--------+-------+--------+------------+---------+-----------------+----------------------+
| 2539329| 1| prior| 1| 2| 08| |
| 2398795| 1| prior| 2| 3| 07| 15.0|
| 473747| 1| prior| 3| 3| 12| 21.0|
| 2254736| 1| prior| 4| 4| 07| 29.0|
| 431534| 1| prior| 5| 4| 15| 28.0|
| 3367565| 1| prior| 6| 2| 07| 19.0|
| 550135| 1| prior| 7| 1| 09| 20.0|
| 3108588| 1| prior| 8| 1| 14| 14.0|
| 2295261| 1| prior| 9| 1| 16| 0.0|
| 2550362| 1| prior| 10| 4| 08| 30.0|
| 1187899| 1| train| 11| 4| 08| 14.0|
| 2168274| 2| prior| 1| 2| 11| |
| 1501582| 2| prior| 2| 5| 10| 10.0|
| 1901567| 2| prior| 3| 1| 10| 3.0|
| 738281| 2| prior| 4| 2| 10| 8.0|
| 1673511| 2| prior| 5| 3| 11| 8.0|
| 1199898| 2| prior| 6| 2| 09| 13.0|
| 3194192| 2| prior| 7| 2| 12| 14.0|
| 788338| 2| prior| 8| 1| 15| 27.0|
| 1718559| 2| prior| 9| 2| 09| 8.0|
+--------+-------+--------+------------+---------+-----------------+----------------------+
正如你所看到的,days_since_prior_order
中有一些空白,其實就是''。 spark.sql("select * from orders where days_since_prior_order <> '' ").show()
+--------+-------+--------+------------+---------+-----------------+----------------------+
|order_id|user_id|eval_set|order_number|order_dow|order_hour_of_day|days_since_prior_order|
+--------+-------+--------+------------+---------+-----------------+----------------------+
| 2398795| 1| prior| 2| 3| 07| 15.0|
| 473747| 1| prior| 3| 3| 12| 21.0|
| 2254736| 1| prior| 4| 4| 07| 29.0|
| 431534| 1| prior| 5| 4| 15| 28.0|
| 3367565| 1| prior| 6| 2| 07| 19.0|
| 550135| 1| prior| 7| 1| 09| 20.0|
| 3108588| 1| prior| 8| 1| 14| 14.0|
| 2295261| 1| prior| 9| 1| 16| 0.0|
| 2550362| 1| prior| 10| 4| 08| 30.0|
| 1187899| 1| train| 11| 4| 08| 14.0|
| 1501582| 2| prior| 2| 5| 10| 10.0|
| 1901567| 2| prior| 3| 1| 10| 3.0|
| 738281| 2| prior| 4| 2| 10| 8.0|
| 1673511| 2| prior| 5| 3| 11| 8.0|
| 1199898| 2| prior| 6| 2| 09| 13.0|
| 3194192| 2| prior| 7| 2| 12| 14.0|
| 788338| 2| prior| 8| 1| 15| 27.0|
| 1718559| 2| prior| 9| 2| 09| 8.0|
| 1447487| 2| prior| 10| 1| 11| 6.0|
| 1402090| 2| prior| 11| 1| 10| 30.0|
+--------+-------+--------+------------+---------+-----------------+----------------------+
但是,是什麼讓我感到困惑的是,當我EXCUTE spark.sql("select min(days_since_prior_order), max(days_since_prior_order) from orders where days_since_prior_order <> '' ").show()
中產生的最大值是不正確的。
+---------------------------+---------------------------+
|min(days_since_prior_order)|max(days_since_prior_order)|
+---------------------------+---------------------------+
| 0.0| 9.0|
+---------------------------+---------------------------+
我的代碼有什麼問題?
所有字段的類型是字符串。 – yanachen
'9.0'> '30 .0'字符串類型 –