6.数据合并

数据合并特指两个文件或者DataFrame对象合并的过程,而数据规整特指合并后或者无须合并的数据的清理、转换、重塑过程。

数据合并主要包括下面两种操作:

  • 轴向连接(concatenation),pd.concat()可以沿一个轴将多个DataFrame对象连接在一起,形成一个新的DataFrame对象

  • 融合(merging/joining/combining),pd.merge()join实例方法可以根据一个或多个键将不同DataFrame中的行连接起来,这个过程类似SQL或其他关系型数据库的连接操作;DataFrame对象的实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值

轴向连接

pd.concat()函数的参数如下所示:

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False, copy=True)
参数 说明
objs 参与连接的Pandas对象的列表。
axis 默认为0(按横轴合并)
ignore_index 布尔值,默认为False。如果为True,则不使用连接轴上的索引值。生成的轴将被标记为0,...,n - 1。如果连接对象的连接轴没有有意义的索引信息,则这非常有用。注意其他轴上的索引值仍然按照join指定的方式处理
keys 序列,默认为None。使用该序列构建层次化索引,且该索引在最外层。如果存在多个级别,应该使用元组序列指定
join {'inner','outer'},默认'outer'。'outer'表示取并集,'inner'表示取交集
join_axes 指定其他轴上的索引,不执行并集或者交集运算

数据融合merge


pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, 
         left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), 
         copy=True, indicator=False, validate=None)

三种融合方式:

  • 一对一融合(one-to-one joins),因为左侧DataFrame的“key”的数值都是唯一的,“K0”、“K1”和“K2”只有一个取值,右侧DataFrame亦是如此,所以这种融合方式被称为一对一融合。

  • 多对一融合(many-to-one joins):其中一个DataFrame的键所在列的取值是唯一的,另一个DataFrame的键所在列的取值不是唯一的,这种情况多出现在索引与列融合的时候;

  • 多对多融合(many-to-many joins):两个DataFrame的键所在列的取值都不是唯一的,这种情况多出现在列与列融合的时候。

参数 说明
left 参与合并的左侧DataFrame
right 参与合并的右侧DataFrame
how {'left', 'right', 'outer', 'inner'},默认为'inner'
on 用于连接的列名。必须包含在左右两个DataFrame中。如果未指定,并且left_index和right_index是False,则左右两个DataFrame列名的交集将作为连接键
left_on 左侧DataFrame中用作连接键的列
right_on 右侧DataFrame中用作连接键的列
left_index {True, False},将左侧的行索引用作其连接键
right_index {True, False},将右侧的行索引用作其连接键
sort 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
suffixes 字符串值元祖,用于追加到重叠列名的末尾,默认为('_x','_y')。例如,如果左右两个DataFrame对象都有"data",则结果中就会出现"data_x"和"data_y"

数据融合join


索引-索引融合

pd.merge(left, right, left_index=True, right_index=True)

默认情况下,join实现的是在连接键上做左连接:

left.join(right, how='inner')

索引-列融合

left.join(right, on=key_or_keys)

数据融合combine_first


根据一个DataFrame对象的值为另外一个DataFrame对象做缺失值填补。

它实现了:在融合过程中,用参数对象中的数据为调用者对象的缺失数据“打补丁”,并且会自动对齐索引。

根据df1中的值去填补df2中的缺失值:

df2.combine_first(df1)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容