python - 外连接从右边添加缺失值作为零或 NaN
问题描述
我正在尝试以一种非常具体的方式合并两个 PANDAS df。
DF1 =
Name Color
Tom Blue
Frank Red
John Green
Sarah Red
DF2 =
Name Shape Value
Tom Circle 4
Tom Square 4
Frank Triangle 7
John Square 2
Sarah Circle 1
期望的结果 = DFM =
Name Color Shape Value
Tom Blue Circle 4
Frank Red Circle 0
John Green Circle 0
Sarah Red Circle 1
Tom Blue Square 4
Frank Red Square 0
John Green Square 2
Sarah Red Square 0
Tom Blue Triangle 0
Frank Red Triangle 7
John Green Triangle 0
Sarah Red Triangle 0
外连接给了我我想要的大部分东西,但不是零。寻找有关执行此操作的优雅方式的一些见解。零或简单的 NaN 很好,因为我可以用零替换 NaN。
解决方案
你可以merge
使用unstack
s=df2.merge(df1,on='Name',how='outer')
s.set_index(['Name','Color','Shape']).Value.unstack(-1,fill_value=0).stack().reset_index().sort_values(['Shape','Name'])
Out[263]:
Name Color Shape 0
0 Frank Red Circle 0
3 John Green Circle 0
6 Sarah Red Circle 1
9 Tom Blue Circle 4
1 Frank Red Square 0
4 John Green Square 2
7 Sarah Red Square 0
10 Tom Blue Square 4
2 Frank Red Triangle 7
5 John Green Triangle 0
8 Sarah Red Triangle 0
11 Tom Blue Triangle 0
推荐阅读
- laravel - Laravel 结合 Passport 认证和普通认证
- vue.js - 我如何使用计算属性从另一个商店中获取价值?
- python - TypeError:'numpy.ndarray'对象在for循环Python中不可调用
- python - 用卡尔曼滤波器过滤磁力计航向
- apache-nifi - 将字符串字段转换为 Nifi 记录中的 JSON 数组或 Avro 数组
- javascript - React 类组件中的解构
- javascript - 按回车键,然后自动按 shift + tab
- math - MIPS汇编中双精度和整数之间的算术
- javascript - 新窗口在“/”应用程序中收到服务器错误
- javascript - 从数组中的对象访问嵌套值的字符串