检查字符串以在 spark 数据框中创建新列

Posted

技术标签:

【中文标题】检查字符串以在 spark 数据框中创建新列【英文标题】:Inspect a string to create a new column in spark dataframe 【发布时间】:2021-07-26 03:15:18 【问题描述】:

我有一个包含交易对的 Spark 数据框列,我需要使用它来创建一个新列,其中填充了代币的名称。

第一列“bot”包含“Polkadot/USD”,我需要一个名为“coin”的新列,其中仅包含 bot 列的子字符串“Polkadot”。所有其他行都相同。基本上,新列需要删除子字符串“/USD”。

代码将如何实现这一点。我是加密交易员而不是编码员,因此答案中的编码细节越多越好。谢谢。

注意:笔记本是 Python Notebook

【问题讨论】:

请在您的问题中添加文本而不是图像。此外,如果您遇到任何问题,请添加您尝试过和遇到的任何问题。 你试过split()spark sql函数吗? 【参考方案1】:

您可以使用regexp_replace 将一个子字符串替换为另一个子字符串

df.withColumn('coin', F.regexp_replace(F.col('bot'), '/USD', ''))

示例

# sample dataframe
df3 = spark.createDataFrame([
    ('BamBridge/USD', ),
    ('CLV/USD', ),
    ('ETH/USD', ),
    ('Polkadot/USD', ),
], ['bot'])

df3 = df3.withColumn('coin', F.regexp_replace(F.col('bot'), '/USD', ''))

df3.show()

+-------------+---------+
|          bot|     coin|
+-------------+---------+
|BamBridge/USD|BamBridge|
|      CLV/USD|      CLV|
|      ETH/USD|      ETH|
| Polkadot/USD| Polkadot|
+-------------+---------+

【讨论】:

您的示例效果很好。但是我确实必须删除“F”。从命令中的两个地方。导入 org.apache.spark.sql.functions.regexp_replace 后。有效的代码行是 df3 = df3.withColumn('coin', regexp_replace(col('bot'), '/USD', '')) 只需删除“F”。感谢您的帮助。 这取决于你是导入整个functions模块作为快捷方式F(就像我做的那样),还是你一个一个导入必要的函数(就像你做的那样)。如果您发现它有用,也请考虑对答案进行投票(除了接受它)!

以上是关于检查字符串以在 spark 数据框中创建新列的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式在 Pandas 数据框中创建新列 [重复]

从对象数组中选择某些项目以在 Typescript 中创建新数组?

根据其他列中的值在 python 3 (pandas) 数据框中创建新列

如何在R中的空数据框中创建新列[重复]

根据其他列的值在多索引数据框中创建新列的简单方法

spark中的isNullOrEmpty函数检查数据框中的列是不是为空或空字符串