[英]How to concat all column values in a spark dataframe into a String in Python?
我正在嘗試將列中的所有值連接起來,以用逗號分隔值從中生成一個字符串。 為此,我在 Scala 中編寫了以下代碼:
val pushLogIds = incLogIdDf.select($"interface_log_id").collect().map(_.getInt(0).toString).mkString(",")
我是 Python 的新手,在選擇列中的值后,我無法找到 Python 的邏輯,以便在收集所有列值后將它們連接到字符串。
final_log_id_list = logidf.select("interface_log_id").collect()
前任:
interface_log_id
----------------
1
2
3
4
Output: a variable of String containing '1,2,3,4'
誰能讓我知道如何將 dataframe 的所有列值連接成一個逗號分隔值的字符串。
要將列轉換為單個字符串,您可以首先使用collect_list
將列收集為列表,然后與,
連接,最后使用first
將第一個值作為標量獲取:
df.agg(F.concat_ws(",",F.collect_list(F.col("interface_log_id")))).first()[0]
#'1,2,3,4'
另一種方法是 collect_list ,然后使用 python ','.join
與map
進行數字列
','.join(map(str,df.agg(F.collect_list(F.col("A"))).first()[0]))
添加基准:
%timeit ','.join(map(str,df.agg(F.collect_list(F.col("A"))).first()[0]))
#9.38 s ± 133 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit df.agg(F.concat_ws(",",F.collect_list(F.col("A")))).first()[0]
#9.46 s ± 246 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.