python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
我有两个Spark数据框:
数据框A:
|col_1 | col_2 | ... | col_n |
|val_1 | val_2 | ... | val_n |
和数据框B:
|col_1 | col_2 | ... | col_m |
|val_1 | val_2 | ... | val_m |
数据框B可以包含来自数据框A的重复行,更新行和新行.我想在spark中编写操作,在其中可以创建一个新数据框,其中包含数据框A的行以及数据框B的更新行和新行.
我从创建仅包含不可更新列的哈希列开始.这是唯一的ID.因此,假设col1和col2可以更改值(可以更新),但是col3,..,coln是唯一的.我创建了一个哈希函数作为hash(col3,.. coln):
A=A.withColumn("hash", hash(*[col(colname) for colname in unique_cols_A]))
B=B.withColumn("hash", hash(*[col(colname) for colname in unique_cols_B]))
现在,我想编写一些火花代码,基本上从B中选择哈希值不在A中的行(因此,新行和更新后的行),并将它们与A中的行一起加入新的数据帧中. pyspark?
编辑:
数据框B可以有来自数据框A的额外列,因此无法进行联合.
样例
数据框A:
+-----+-----+
|col_1|col_2|
+-----+-----+
| a| www|
| b| eee|
| c| rrr|
+-----+-----+
数据框B:
+-----+-----+-----+
|col_1|col_2|col_3|
+-----+-----+-----+
| a| wew| 1|
| d| yyy| 2|
| c| rer| 3|
+-----+-----+-----+
结果:
数据框C:
+-----+-----+-----+
|col_1|col_2|col_3|
+-----+-----+-----+
| a| wew| 1|
| b| eee| null|
| c| rer| 3|
| d| yyy| 2|
+-----+-----+-----+
解决方法:
这与update a dataframe column with new values密切相关,除了您还想添加DataFrame B中的行.一种方法是首先执行链接的问题中概述的操作,然后将结果与DataFrame B合并并删除重复项.
例如:
dfA.alias('a').join(dfB.alias('b'), on=['col_1'], how='left')\
.select(
'col_1',
f.when(
~f.isnull(f.col('b.col_2')),
f.col('b.col_2')
).otherwise(f.col('a.col_2')).alias('col_2'),
'b.col_3'
)\
.union(dfB)\
.dropDuplicates()\
.sort('col_1')\
.show()
#+-----+-----+-----+
#|col_1|col_2|col_3|
#+-----+-----+-----+
#| a| wew| 1|
#| b| eee| null|
#| c| rer| 3|
#| d| yyy| 2|
#+-----+-----+-----+
如果您有很多要替换的列并且不想对所有这些都进行硬编码,则可以更一般地使用列表推导.
cols_to_update = ['col_2']
dfA.alias('a').join(dfB.alias('b'), on=['col_1'], how='left')\
.select(
*[
['col_1'] +
[
f.when(
~f.isnull(f.col('b.{}'.format(c))),
f.col('b.{}'.format(c))
).otherwise(f.col('a.{}'.format(c))).alias(c)
for c in cols_to_update
] +
['b.col_3']
]
)\
.union(dfB)\
.dropDuplicates()\
.sort('col_1')\
.show()
标签:python,pyspark
python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...相关推荐
- python处理表格数据-python读取word 中指定位置的表格及表格数据
1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...
- 将数据的指定位置置位
将数据的指定位置置位 引言 实现过程 如何实现数组形式的数据的置位 函数的封装 扩展 结语 引言 在C语言的编程下,我们会经常遇到将数据的某一位置为0或者1的情况,在常用数据(char.int.lon ...
- python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符
python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...
- python指定位置写入文件_Python从文件中读取指定的行以及在文件指定位置写入
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 : This is line 1. Th ...
- Python向DataFrame中指定位置添加一列或多列
对于这个问题,相信很多人都会很困惑,本篇文章将会给大家介绍一种非常简单的方式向DataFrame中任意指定的位置添加一列. 在此之前或许有不少读者已经了解了最普通的添加一列的方式,如下: import ...
- 使用Python在Excel表指定位置插入多列并赋值
在指定位置插入多列并赋值 在做数据预处理时有这个需求,查询众多文章发现常用insert()函数以及concat(),但是concat只能在插在Excel表尾部,无法插入指定位置: insert()函数 ...
- python替换指定位置word图片_用Python在word的指定位置插入图片(使用Python-docx包)...
1 2 首先,本实例是采用java语言的,需要进行xml操作,至于poi,docx4j这些,因为感觉不是文档不太好,要嘛就是操作不方便,而且英文就算了,主要是注释很少,让人云里雾里的.所以,嘿嘿,直接 ...
- Python在word文件指定位置中插入其他word文件内容的代码
以下是在 Python 中插入另一个 word 文件内容到指定位置的代码: import docxdef insert_word_doc(main_doc, insert_doc, start, en ...
- python找出文本的位置和替换_python查找文本文档中特定间隔位置的字符并替换
实际工作中,从数据库里导出了几万条IMEI到excel中,现在需要把这些IMEI每40个分一组,保存在txt文档中,方便进行性能测试时调用. 1.excel中的IMEI以常规格式显示了,虽然内容是15 ...
最新文章
- 如何更高效的管理原生微服务应用
- 2021年春季学期-信号与系统-第十二次作业参考答案
- ubuntu10.04 解决打开windows记事本.txt文件乱码的方法
- Android网络服务发现(NSD)协议的使用
- Wireshark EndPoints窗口
- python安装mysql数据库_windows10安装mysql-8.0.13(zip安装)~Python安装mysql
- nodejs字符与字节之间的转换
- 进程间的六种通信方式
- c form画直线_初一数学线段、射线、直线知识点精讲
- REST是否会步SOAP的后尘?
- 电子书下载:深入解析Windows操作系统第6版 Windows Internals 6th Part1, Part2
- java中常用的设计模式(*)
- 非平稳序列的随机分析
- 通达oa php_【通达OA】办公就用通达OA,通达OA官方网站_OA系统_协同办公
- 微信社群运营是什么,如何做好社群运营?
- 苹果应用商店AppStore审核规则指南
- 上海市政府颁布智能汽车牌照,蔚来汽车成首批获此资格企业
- 梦回山海推广码jn0010 梦回山海推广码
- 分立元器件--电阻的特性以及工程使用注意事项
- 生成树协议(RTP、RSTP、MSTP)
热门文章
- 6.1Python文件的操作(一)
- laravel常用命令整理
- 阿里云HBase推出全新X-Pack服务 定义HBase云服务新标准...
- web服务端的架构演变
- Redis 优势以及性能问题
- content的定义
- Ubuntu 9.04 死机处理(Linux死机处理)
- python,无网、没网、生成环境迁移安装环境,支持virtualenv
- Linux centosVMware shell编程 for循环、while循环、break跳出循环、continue结束本次循环、exit退出整个脚本...
- .Net语言 APP开发平台——Smobiler学习日志:如何设置页面的title