检查字符串以在 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 数据框中创建新列的主要内容,如果未能解决你的问题,请参考以下文章
从对象数组中选择某些项目以在 Typescript 中创建新数组?