「目录」
数据规整:聚合、合并和重塑
Data Wrangling: Join, Combine, and Reshape
8.1 => 层次化索引 8.2 => 合并数据集
--------> 数据库风格的DataFrame合并
--------> 索引上的合并
--------> 轴向连接
--------> 合并重叠数据
8.3 => 重塑和轴向旋转
合并重叠数据
本篇涉及到的函数方法:
np.where() DataFrame.combine_first()
看完这一部分的内容你就会觉得,与其说是合并重叠数据,不如叫做“打补丁”更贴切有趣些,但还是按照原书的标题来吧。
Numpy中有一个np.where函数,其中有三个参数:
np.where(condition, x, y)
复制
第一个参数为条件,当条件成立时返回x,若条件不成立则返回y。
来看个例子吧,下面我们先创建了两个索引重叠的DataFrame:
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: a = pd.Series([np.nan, 2.5, np.nan, 3.5, 4.5, np.nan], index=['f', 'e', 'd', 'c', 'b', 'a'])
In [4]: b = pd.Series(np.arange(len(a), dtype=np.float64), index=['f', 'e', 'd', 'c', 'b', 'a'])
In [5]: b[-1] = np.nan
In [6]: a
Out[6]:
f NaN
e 2.5
d NaN
c 3.5
b 4.5
a NaN
dtype: float64
In [7]: b
Out[7]:
f 0.0
e 1.0
d 2.0
c 3.0
b 4.0
a NaN
dtype: float64
In [8]: np.where(pd.isnull(a), b, a)
Out[8]: array([0. , 2.5, 2. , 3.5, 4.5, nan])复制
Series有一个combine_first方法,实现的也是一样的功能,还带有pandas的数据对齐:
In [9]: b[:-2].combine_first(a[2:])
Out[9]:
a NaN
b 4.5
c 3.0
d 2.0
e 1.0
f 0.0
dtype: float64复制
对于DataFrame,combine_first自然也会在列上做同样的事情,因此你可以将其看作:用DataFrame_B的数据为DataFrame_A的缺失数据“打补丁”:
In [10]: df1 = pd.DataFrame({'a':[1., np.nan, 5., np.nan], 'b':[np.nan, 2., np.nan, 6.], 'c':range(2, 18, 4)})
In [11]: df2 = pd.DataFrame({'a':[5., 4., np.nan, 3., 7.], 'b':[np.nan, 3., 4., 6., 8.]})
In [12]: df1
Out[12]:
a b c
0 1.0 NaN 2
1 NaN 2.0 6
2 5.0 NaN 10
3 NaN 6.0 14
In [13]: df2
Out[13]:
a b
0 5.0 NaN
1 4.0 3.0
2 NaN 4.0
3 3.0 6.0
4 7.0 8.0
In [14]: df1.combine_first(df2)
Out[14]:
a b c
0 1.0 NaN 2.0
1 4.0 2.0 6.0
2 5.0 4.0 10.0
3 3.0 6.0 14.0
4 7.0 8.0 NaN复制
往期回顾



Stay hungry, stay foolish
文章转载自Yuan的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
128次阅读
2025-04-01 16:20:44
演讲实录|分布式 Python 计算服务 MaxFrame 介绍及场景应用方案
阿里云大数据AI技术
119次阅读
2025-03-17 13:27:37
mysql提升10倍count(*)的神器
大大刺猬
105次阅读
2025-03-21 16:54:21
官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升
ZILLIZ
89次阅读
2025-04-02 09:34:13
[MYSQL] query_id和STATEMENT_ID在不同OS上的关系
大大刺猬
62次阅读
2025-03-26 19:08:13
国密算法介绍
漫步者
43次阅读
2025-03-21 09:20:39
DataWorks :Data+AI 一体化开发实战图谱
阿里云大数据AI技术
42次阅读
2025-03-19 11:00:55
如何使用 RisingWave 和 PuppyGraph 构建高性能实时图分析框架
RisingWave中文开源社区
37次阅读
2025-03-18 10:49:54
AI 提示词魔法:教你用 AI 提升效率与创意
数智新知
36次阅读
2025-03-10 10:30:27
WingPro for Mac 强大的Python开发工具 v10.0.9注册激活版
一梦江湖远
28次阅读
2025-03-29 10:33:27