Pandas —— concat( )连接

本文详细介绍了Pandas中concat函数的功能及使用方法,包括如何通过不同的参数设置实现数据的灵活拼接,例如axis、join、join_axes等参数的作用,并展示了如何创建层次化索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

concat( )连接类似于merge()合并,但它不需要指定连接键,只是做一个简单的拼接。

concat( )连接

默认情况下

concat是在axis=0上工作的,最终产生一个新的Series

In [29]: s1=pd.Series([0,1],index=['a','b'])
In [34]: s2=pd.Series([2,3,4],index=['a','b','c'])

In [35]: s1
Out[35]:
a    0
b    1
dtype: int64

In [36]: s2
Out[36]:
a    2
b    3
c    4
dtype: int64

In [37]: pd.concat([s1,s2])
Out[37]:
a    0
b    1
a    2
b    3
c    4
dtype: int64

axis参数

如果传入axis=1,就会产生一个DataFrame

In [38]: pd.concat([s1,s2],axis=1)
Out[38]:
     0  1
a  0.0  2
b  1.0  3
c  NaN  4

join参数

传入join=“inner”即可得到它们的交集

In [39]: pd.concat([s1,s2],axis=1,join="inner")
Out[39]:
   0  1
a  0  2
b  1  3

join_axes参数

指定索引,若不存在与索引对应的字段,则以NaN显示

In [40]: pd.concat([s1,s2],axis=1,join_axes=[['a','c','d','e']])
Out[40]:
     0    1
a  0.0  2.0
c  NaN  4.0
d  NaN  NaN
e  NaN  NaN

keys参数

创建层次化索引

In [42]: pd.concat([s1,s2],keys=['one','two'])
Out[42]:
one  a    0
     b    1
two  a    2
     b    3
     c    4
dtype: int64

如果沿着axis=1对Series进行合并,则keys会成为DataFrame的列头

In [43]: pd.concat([s1,s2],keys=['one','two'],axis=1)
Out[43]:
   one  two
a  0.0    2
b  1.0    3
c  NaN    4

如果传入的是一个字典而不是列表,则字典的键就会被当成是keys选项的值

In [44]: pd.concat({'A':s1,'B':s2},axis=1)
Out[44]:
     A  B
a  0.0  2
b  1.0  3
c  NaN  4

ignore_index参数

忽略跟当前工作无关的行索引,产生一组新索引

In [51]: pd.concat([s1,s2])
Out[51]:
a    0
b    1
a    2
b    3
c    4
dtype: int64

In [52]: pd.concat([s1,s2],ignore_index=True)
Out[52]:
0    0
1    1
2    2
3    3
4    4
dtype: int64

concat函数的参数

参数说明
objs参与连接的pandas对象的列表或字典。唯一必须的参数
axis指明连接的轴向,默认为0
join指明索引是按交集(inner)还是并集(outer)进行合并。默认为outer
join_axes指明用于其他n-1条轴的索引,不执行并集,交集的操作
keys与连接对象有关的值,用于形成连接轴上的层次化索引
ignore_index不保留连接轴上的索引,产生一组新索引

转载地址:

《利用Python进行数据分析》

### pandas库中`concat`函数的使用方法 #### 函数定义与基本概念 `pandas.concat()` 是 Pandas 库中的一个重要工具,旨在连接(合并)两个或多个 Pandas 对象,比如 `DataFrame` 或者 `Series`。此功能强大之处在于它提供了多种方式来控制如何组合数据[^1]。 #### 主要参数解释 - **objs**: 需要被连接的对象表,可以是 DataFrame、Series 等类型的对象组成的序。 - **axis (默认0)**: 指定沿哪个轴方向进行拼接操作;当设置为 0 时表示按行追加,默认行为;而设为 1 则表示向扩展。 - **join ('outer' by default)**: 定义索引对齐的方式。“outer”意味着取所有输入对象中存在的唯一标签集合作为最终结果集,“inner”则只保留共同拥有的部分。 - **ignore_index (False 默认)**: 如果设定为 True,则不会考虑原始索引而是重新创建一个新的整数型连续编号索引[^2]。 其他可选参数还包括但不限于: - **keys** - **levels** - **names** - **verify_integrity** - **sort** - **copy** 这些选项允许更精细地调整输出格式以及处理潜在的数据冲突等问题。 #### 实际应用案例 下面通过具体例子展示不同场景下 `pandas.concat()` 的调用方式: ##### 基本用法——纵向堆叠 DataFrames 假设存在两个结构相同但内容不同的表格 A 和 B ,可以通过如下代码实现它们之间的简单叠加: ```python import pandas as pd df_a = pd.DataFrame({'A': ['a', 'b'], 'B': [1, 2]}) df_b = pd.DataFrame({'A': ['c', 'd'], 'B': [3, 4]}) result_df = pd.concat([df_a, df_b], axis=0) print(result_df) ``` 上述命令会按照垂直顺序依次排给定的数据框实例,并保持原有索引不变。 ##### 忽略原索引并重置新序号 如果希望忽略掉原有的索引信息,在新的基础上建立一套全新的有序标识符,那么可以在调用时加入额外的关键字参数 `ignore_index=True`: ```python new_result_df = pd.concat([df_a, df_b], axis=0, ignore_index=True) print(new_result_df) ``` 这将使得返回的结果拥有从零开始计数的新索引值而不是继承自源表单的旧版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值