将数据帧的每一行转换为字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据帧的每一行转换为字符串相关的知识,希望对你有一定的参考价值。

我正在尝试使用pyspark中的hashlib.md5为数据帧生成哈希码。它只接受一个字符串来生成哈希码。

我需要将数据帧的每一行转换为字符串。

我尝试使用concat_ws函数连接所有列并使其成为字符串但没有结果。

我的数据框有Id, name, marks

我试过了:

str=df.select(concat_ws("id","name","marks"))

print(hashlib.md5(str.encode(encoding='utf_8', errors='strict')).hexdigest())

我收到了这个错误:

AttributeError: 'DataFrame' object has no attribute 'encode'
答案

你能试一下吗

df.select("colname").rdd.map(lambda x: hashlib.md5(str(x).encode(encoding='utf_8', errors='strict')).hexdigest()).collect()

你应该看到类似的东西

['1dd55a7d40667d697743612f826b71e1', '64a537f89bd95f34374b619452b1a5ab']

在你的情况下,

df.select(expr("concat_ws(id,name,marks)").alias("mycolumn")).rdd.map(lambda x: hashlib.md5(str(x).encode(encoding='utf_8', errors='strict')).hexdigest()).collect()

以上是关于将数据帧的每一行转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将每一行熊猫数据帧附加到另一个数据帧的每一行

将数据帧返回函数应用于基础数据帧的每一行

为 pyspark 数据帧的每一行评估多个 if elif 条件

我们可以在数据帧的每一行上使用 spark sql 函数吗?

将 Spark Dataframes 的每一行转换为一个字符串,并在 scala 中的每列值之间使用分隔符

如何在巨大数据帧的每一行中查找前 n 个值的列索引