pandas中 concat 的使用

本文介绍了Pandas API中用于合并Series和DataFrame对象的方法,包括`pd.concat()`函数的各种用法,如忽略索引、设置分层索引、处理重叠列、指定合并方式以及沿不同轴合并。示例展示了如何控制合并行为,如重置索引、保持索引唯一性以及处理不同形状和列名的数据集。
摘要由CSDN通过智能技术生成

api参考:

 1、合并两个Series。

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
>>> pd.concat([s1, s2])
0    a
1    b
0    c
1    d
dtype: object

2、将ignore_index选项设置为True ,索引将重置。

>>> pd.concat([s1, s2], ignore_index=True)
0    a
1    b
2    c
3    d
dtype: object

3、使用keys选项在数据的最外层添加分层索引。

>>> pd.concat([s1, s2], keys=['s1', 's2'])
s1  0    a
    1    b
s2  0    c
    1    d
dtype: object

4、使用names选项标记您创建的索引键。

>>> 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

5、合并DataFrame具有相同列的两个对象。

# df1
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]], columns=['letter', 'number'])
>>> df1
  letter  number
0      a       1
1      b       2


# df2
>>> df2 = pd.DataFrame([['c', 3], ['d', 4]], columns=['letter', 'number'])
>>> df2
  letter  number
0      c       3
1      d       4


# concat
>>> pd.concat([df1, df2])
  letter  number
0      a       1
1      b       2
0      c       3
1      d       4

6、合并DataFrame具有重叠列的对象并返回所有内容。交叉点外的列将填充NaN值。

# df1
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]], columns=['letter', 'number'])
>>> df1
  letter  number
0      a       1
1      b       2

>>> df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']], columns=['letter', 'number', 'animal'])
>>> df3
  letter  number animal
0      c       3    cat
1      d       4    dog

>>>pd.concat([df1, df3], sort=False)
  letter  number animal
0      a       1    NaN
1      b       2    NaN
0      c       3    cat
1      d       4    dog

7、组合DataFrame具有重叠列的对象,并仅返回通过传递inner给join关键字参数共享的对象。

>>> pd.concat([df1, df3], join="inner")
  letter  number
0      a       1
1      b       2
0      c       3
1      d       4

8、DataFrame传入 axis=1(axis默认为0),沿 x 轴水平组合对象

# df1
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]], columns=['letter', 'number'])
>>> df1
  letter  number
0      a       1
1      b       2


# df4
>>> df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']], columns=['animal', 'name'])
>>> df4
   animal    name
0    bird   polly
1  monkey  george


# axis=1   值(追加列)
>>> pd.concat([df1, df4], axis=1)
  letter  number  animal    name
0      a       1    bird   polly
1      b       2  monkey  george


# axis=0 默认  值(追加行,无值补NaN)
>>> pd.concat([df1, df4], axis=0)
   animal letter    name  number
0     NaN      a     NaN     1.0
1     NaN      b     NaN     2.0
0    bird    NaN   polly     NaN
1  monkey    NaN  george     NaN

9、使用verify_integrity选项防止结果包含重复的索引值 。

>>> df5 = pd.DataFrame([1], index=['a'])
>>> df5
   0
a  1

>>> df6 = pd.DataFrame([2], index=['a'])
>>> df6
   0
a  2

>>> pd.concat([df5, df6], verify_integrity=True)
Traceback (most recent call last):
    ...
ValueError: Indexes have overlapping values: ['a']

参考官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种麦南山下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值