Pysparkデータフレームの文字列列がすべて数値かどうかを確認する方法 質問する

Pysparkデータフレームの文字列列がすべて数値かどうかを確認する方法 質問する

Dataframeの列を持つPySparkがありますstrings。どの行が数値であるかを確認するにはどうすればいいでしょうか。PySparkの関数を見つけることができませんでした。公式文書

values = [('25q36',),('75647',),('13864',),('8758K',),('07645',)]
df = sqlContext.createDataFrame(values,['ID',])
df.show()
+-----+
|   ID|
+-----+
|25q36|
|75647|
|13864|
|8758K|
|07645|
+-----+

Python には、に数字だけが含まれているかどうかを返す.isDigit()関数があります。TrueFalsestring

期待されるデータフレーム:

+-----+-------+
|   ID| Value |
+-----+-------+
|25q36| False |
|75647| True  |
|13864| True  |
|8758K| False |
|07645| True  |
+-----+-------+

を作成することは避けたいと思いますUDF

ベストアンサー1

単純なキャストで十分です:

from pyspark.sql import functions as F

my_df.select(
  "ID",
  F.col("ID").cast("int").isNotNull().alias("Value ")
).show()

+-----+------+
|   ID|Value |
+-----+------+
|25q36| false|
|75647|  true|
|13864|  true|
|8758K| false|
|07645|  true|
+-----+------+

おすすめ記事