したがって、次のような1つの列を持つデータフレームがあります。
+----------+
|some_colum|
+----------+
| 10|
| 00|
| 00|
| 10|
| 10|
| 00|
| 10|
| 00|
| 00|
| 10|
+----------+
ここで、some_colum列はバイナリ文字列です。
この列を10進数に変換したいと思います。
やってみた
data = data.withColumn("some_colum", int(col("some_colum"), 2))
しかし、これはうまくいかないようです。エラーが発生した場合:
int() can't convert non-string with explicit base
cast()はその仕事をすることができるかもしれないと思いますが、私はそれを理解することができません。何か案は?
int
列に直接適用することはできないと思います。udfで使用できます:
from org.apache.spark.sql import functions
binary_to_int = functions.udf(lambda x: int(x, 2), IntegerType())
data = data.withColumn("some_colum", binary_to_int("some_colum").alias('some_column_int'))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加