我有一个 DataFrame,其中有一个二进制列,表示初始字符串的十六进制编码:
random_id | random_id_cesu8 |
---|---|
123456789012 | [31 32 33 34 35 36 37 38 39 30 31 32] |
该random_id_cesu8
列包含以 UTF-8 编码的字符串的二进制表示形式random_id
,并以十六进制格式的字节值列表显示。
我想将random_id_cesu8
列转换为单个连接的十六进制字符串:313233343536373839303132
,它是列表中每个单独字节值的连接random_id_cesu8
。
我尝试了多种方法,但它们都导致原始random_id
值(123456789012
)而不是所需的连接十六进制字符串(313233343536373839303132
)。
我怎样才能正确实现这一转变?
以下是使用 PySpark 将二进制列转换为十六进制表示的解决方案:
解释:
encode(df.value, 'utf-8')
:此函数使用 UTF-8 编码将字符串值编码为二进制格式。hex()
:此函数将二进制数据转换为十六进制表示形式。结果将是一个 DataFrame,其
encoded_hex
列包含所需的十六进制字符串313233343536373839303132
。