【发布时间】:2021-06-04 17:27:54
【问题描述】:
我在 pyspark 中有一个这样的数据框:
+--------------------+--------+----------+--------------------+--------------------+
| title| journal| date| author| content|
+--------------------+--------+----------+--------------------+--------------------+
|Kudlow Breaks Wit...|NYT |2019-05-01| By Mark Landler |WASHINGTON — Pres...|
|Scrutiny of Russi...|NYT |2019-05-01|By Charlie Savage...|WASHINGTON — The ...|
|Greek Anarchists ...|NYP |2019-05-01|By Niki Kitsantonis |ATHENS — Greek an...|
我正在寻找日志等于“NYP”的替换行。我知道如何处理 sql 上下文:
df.createOrReplaceTempView("tbl_journal")
df = sqlContext.sql("SELECT journal, date FROM tbl_journal where journal like '%NYT%'")
df = df.withColumn('journal', lit('The New York Times'))
但问题是它会重写原始数据帧(我只想替换 journal = 'NYT' 的值并保留其他值)。
其他事情,我搜索其他主题,但我没有找到解决方案来结合 Where 和 WithColumn 语句。我的意思是如果我在 PySpark 中这样做(不是使用 SQL):
df.where(col('journal').like("%NYT%")).withColumn('journal', lit('Oui Test')).show()
它替换所有的值,没有条件。
您知道如何在原始数据框中仅替换具有此条件的值吗?使用 spark 或 sqlcontext。感谢您的提前!
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql