pandas数据框的合并操作 您所在的位置:网站首页 pandas增加行 pandas数据框的合并操作

pandas数据框的合并操作

2023-03-29 22:51| 来源: 网络整理| 查看: 265

以下内容参考: 无欢不散:7000字整理: 全网最详细Pandas合并数据集操作总结

仅选择常用的操作(以及个人的理解)作为笔记:

1 按照行或列索引合并数据框:contact、append和joinpd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, ) # 关键参数: # objs:需要用来进行合并的数据集,可以是Series类型或者是DataFrame类型的数据 # axis:可以理解为是合并的方向,默认是0 # join:可以理解为是合并的方式,有并集或是交集两种方式,默认的是并集 # ignore_index:忽略索引,默认是False # keys:用于做行方向的多重索引1.1 增加数据框的行(按照 两个数据框的列索引 合并数据框)

如果列名不同则生成新列

df1 = pd.DataFrame( { "A": ["A0", "A1", "A2", "A3"], "B": ["B0", "B1", "B2", "B3"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"], } ) df2 = pd.DataFrame( { "A": ["A4", "A5", "A6", "A7"], "B": ["B4", "B5", "B6", "B7"], "C": ["C4", "C5", "C6", "C7"], "D": ["D4", "D5", "D6", "D7"], } ) df3 = pd.DataFrame( { "A": ["A8", "A9", "A10", "A11"], "B": ["B8", "B9", "B10", "B11"], "C": ["C8", "C9", "C10", "C11"], "D": ["D8", "D9", "D10", "D11"], } ) print(df1) print(df2) print(df3) # 方法1 frames = [df1, df2, df3] result = pd.concat(frames) result.index = range(len(result)) print(result) # 方法2 result = df1.append(df2) print(result) result = df1.append([df2, df3]) print(result)注意:本图的行索引与代码不一致1.2 增加数据框的列(按照 两个数据框的行索引 合并数据框)df4 = pd.DataFrame( { "B": ["B2", "B3", "B6", "B7"], "D": ["D2", "D3", "D6", "D7"], "F": ["F2", "F3", "F6", "F7"], }, index=[2, 3, 6, 7], ) # axis = 1 表示增加列,按照行合并 # join 默认为outer表示并集 # join = inner 表示交集 result = pd.concat([df1, df4], axis=1,join='inner') print(result) # join = 'outer'取并集 result = pd.concat([df1, df4], axis=1) print(result)1.3 增加数据框的列(基于 单个数据框的行索引 合并数据框)left = pd.DataFrame( {"A": ["A0", "A1", "A2"], "B": ["B0", "B1", "B2"]}, index=["K0", "K1", "K2"] ) right = pd.DataFrame( {"C": ["C0", "C2", "C3"], "D": ["D0", "D2", "D3"]}, index=["K0", "K2", "K3"] ) print(left) print(right) # 根据left数据框索引合并 列 result = left.join(right) print(result) # 根据right数据框索引合并 列 result = right.join(left) print(result)2 按照指定的列 作为“行索引”来合并数据框:mergepd.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, ) # left/right:也就是所要合并的两个表格 # on:左右所要合并的两表格的共同列名 # left_on/right_on:两表格进行合并时所对应的字段 # how:合并的方式,有left、right、outer、inner四种,默认是inner # inner:也就是交集,在使用merge()方法的时候,默认采用的都是交集的合并方式 # outer:可以理解为是并集的合并方式 # left/right: 单方向的进行并集的合并 # suffixes:在两表格进行合并时,重复的列名后面添加的后缀 # left_index:若为True,按照左表格的索引来连接两个数据集 # right_index:若为True,按照右表格的索引来连接两个数据集2.1 把某一列当作“行索引” 合并数据框

注意:列名必须一样

left = pd.DataFrame( { "key": ["K0", "K1", "K2", "K3"], "A": ["A0", "A1", "A2", "A3"], "B": ["B0", "B1", "B2", "B3"], } ) right = pd.DataFrame( { "key": ["K0", "K1", "K2", "K3"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"], } ) result = pd.merge(left, right, on="key") result注意:待合并的数据框的列名均为 key2.1 把多列当作“行索引” 合并数据框

基于left数据框合并

result = pd.merge(left, right, how="left", on=["key1", "key2"]) result

基于right数据框合并

result = pd.merge(left, right, how="right", on=["key1", "key2"]) result

基于outer合并数据框

result = pd.merge(left, right, how="outer", on=["key1", "key2"]) result

基于inner合并数据框

result = pd.merge(left, right, how="inner", on=["key1", "key2"]) result



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有