如何截断 DataFrame 列中字符串的长度?

Posted

技术标签:

【中文标题】如何截断 DataFrame 列中字符串的长度?【英文标题】:How can I truncate the length of a string in a DataFrame Column? 【发布时间】:2019-03-28 15:00:29 【问题描述】:

我有一个DataFrame,其中包含带有文本的列,我想将Column 中的文本截断到一定长度。我尝试了以下操作:

val updatedDataFrame = dataFrame.withColumn("NewColumn", col("ExistingColumn").take(15))

我收到以下错误,因为我转换了 Column 而不是其内容:

notebook:7: error: value take is not a member of org.apache.spark.sql.Column .withColumn("NewColumn", col("ExistingColumn").take(15))

【问题讨论】:

【参考方案1】:

使用方法substring,如下图:

import org.apache.spark.sql.functions._
import spark.implicits._

val df = Seq( (1, "abcdef"), (2, "uvwx") ).toDF("id", "value")

df.withColumn("value3", substring($"value", 1, 3)).show
// +---+------+------+
// | id| value|value3|
// +---+------+------+
// |  1|abcdef|   abc|
// |  2|  uvwx|   uvw|
// +---+------+------+

【讨论】:

以上是关于如何截断 DataFrame 列中字符串的长度?的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用query函数基于dataframe字符串数据列中字符串的长度筛选dataframe的数据行(specific column string length)

pandas使用len函数和max函数计算dataframe中指定字符串数据列中字符串的最大长度并使用np.where函数筛选dataframe中字符串的最大长度所对应的数据行

pandas使用len函数和max函数计算dataframe中指定字符串数据列中字符串的最大长度(length of the longest string in a column)

将最长字段放在dataframe列中

RODBC::sqlSave() 创建表,警告:在列中截断为 255 个字节?

RODBC :: sqlSave()创建表,警告:在列中截断为255个字节?