当前位置: 首页 > news >正文

pandas【9】数据合并concat/_append

pandas.concat — pandas 2.2.3 documentation

批量合并相同格式的Excel、给DataFrame添加行、给DataFrame添加列

1. concat

pandas.concat(
objs,
 *, 
axis=0, 
join='outer',        #{‘inner’, ‘outer’}, default ‘outer’
ignore_index=False,
keys=None, 
levels=None,
names=None, 
verify_integrity=False, 
sort=False, 
copy=None)

例1

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
>>> pd.concat([s1, s2])
0    a
1    b
0    c
1    d
dtype: object
>>> pd.concat([s1, s2], ignore_index=True)
0    a
1    b
2    c
3    d
dtype: object
>>> pd.concat([s1, s2], keys=['s1', 's2'],
...           names=['Series name', 'Row ID'])
Series name  Row ID
s1           0         a
             1         b
s2           0         c
             1         d
dtype: object

例2

0)

 1)按行连接

 

2) 按列连接

3) 被连接数据的索引不同

 

4)连接时取交集

5)按列连接时修改行索引

 

6)重设结果的索引

ignore_index: ignore_index参数默认为False,结果的索引是被连接数据的索引(行索引和列索引)。将ignore_index修改为True,可以重设结果的行索引或列索引。

按行连接时,设置ignore_index为True,结果的行索引被重设为0开始的整数索引。按列连接时,则列索引被重设。

7)添加外层行索引

keys: keys参数默认为空,可以用keys参数给结果添加外层的行索引,使行索引变成多重行索引。也可以添加多层,如果添加多层行索引则用元组的方式传入。

前面提到concat()的第一个参数可以用字典的方式传入,其效果与使用keys参数相同。

给结果添加外层的行索引后,可以用添加的外层行索引将被连接数据取出。

2. append 

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)

other:要追加的DataFrame、Series或类似字典的对象。
ignore_index:是否忽略索引,在结果中重新标记行的索引,默认为False。
verify_integrity:如果为True,在创建具有重复索引的情况下会引发ValueError异常,默认为False。
sort:如果为True,则在列不对齐时对列进行排序,默认为False。
import pandas as pd

if __name__ == '__main__':


    # 创建第一个DataFrame
    df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'], index=['x', 'y'])
    print(df1)
    # 输出:
    #    A  B
    # x  1  2
    # y  3  4

    # 创建第二个DataFrame
    df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'], index=['x', 'y'])
    print(df2)
    # 输出:
    #    A  B
    # x  5  6
    # y  7  8

    # 使用append方法将df2追加到df1末尾
    df_appended = df1._append(df2)
    print(df_appended)
    # 输出:
    #    A  B
    # x  1  2
    # y  3  4
    # x  5  6
    # y  7  8

    # 创建一个Series对象
    series = pd.Series([9, 10], name='C')
    print(series)
    # 输出:
    # 0     9
    # 1    10
    # Name: C, dtype: int64

    # 使用append方法将series追加到df1末尾
    df_appended_series = df1._append(series)
    print(df_appended_series)
    # 输出:
    #      
    #     A    B    0     1
    # x  1.0  2.0  NaN   NaN
    # y  3.0  4.0  NaN   NaN
    # C  NaN  NaN  9.0  10.0

可以一行一行的给bataFrame添加数据

#第一个入参是一个列表,避免了多次复制
pd.concat(
[pd.DataFrame([i], columns=['A']) for i in range (5)],
ignore_index=True)

Pandas知识点-连接操作concat-腾讯云开发者社区-腾讯云

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/100835.html

相关文章:

  • 蓝桥云客 岛屿个数
  • Python if else while for 学习笔记
  • 基于Python的图书馆信息管理系统研发
  • 探寻性能优化:如何衡量?如何决策?
  • Cesium 全面介绍
  • 蓝桥与力扣刷题(34 在排序数组中查找元素的第一个和最后一个位置)
  • HTTP常见状态码分析
  • ICDE 2025[Tutorial]| 基于时间序列和时空数据的数据驱动决策
  • ArcGIS地理信息系统空间分析实验教程学习
  • [c语言日寄]通讯录pro版:文件操作
  • 知识体系_统计学_05_参数估计
  • 《无线江湖五绝:BLE/WiFi/ZigBee的频谱大战》
  • Pytorch学习笔记(十七)Image and Video - Adversarial Example Generation
  • Day 3 系统总线(1)
  • 未来环境生成助力具身导航!PanoGen++:基于领域自适应全景图像生成的视觉语言导航
  • DeepSeek+Kimi:PPT制作的效率革命
  • redis hashtable 的sizemask理解
  • 多线程 - 线程安全
  • QTreeView开发入门
  • 基于51单片机的简易示波器proteus仿真
  • 树状数组(2025钉耙编程4th 1006进步洛谷3374洛谷3368)
  • Assembly语言的装饰器
  • 【Matlab】-- 基于MATLAB的美赛常用多种算法
  • GPU中的cluster
  • 通过 Docker Swarm 集群探究 Overlay 网络跨主机通信原理
  • Windows 11 中搜索服务索引文件大处理
  • Javaweb后端 AOP快速入门 AOP核心概念 AOP执行流程
  • Springboot学习笔记 3.13
  • 若依前后端不分离字典修改---formatter对原值进行修改
  • 场外基金和ETF场内基金有何区别?ETF佣金最低是多少?