求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
Pandas 教程
1. Pandas 是什么
2.Pandas库下载和安装
3.Pandas Series入门教程
4.Pandas DataFrame入门教程
5.Pandas Panel三维数据结构
6.Python Pandas描述性统计
7.Pandas使用自定义函数
8.Pandas reindex重置索引
9.Pandas iteration遍历
10.Pandas sorting排序
11.Pandas去重函数:drop_duplicates()
12.Python Pandas处理字符串(方法详解)
13.Pandas设置数据显示格式
14.Pandas loc/iloc用法详解
15.Python Pandas统计函数
16.Python Pandas窗口函数
17.Python Pandas聚合函数
18.Python Pandas缺失值处理
19.Pandas groupby分组操作详解
20.Pandas merge合并操作
21.Pandas concat连接操作
22.Python Pandas时间序列
23.Pandas日期时间格式化
24.Padans Timedelta时间差
25.Pandas随机选择样本
26.Pandas数据重采样
27.Python Pandas分类对象
28.Python Pandas绘图
29.Python Pandas读取文件
30.Pandas csv读写文件
31.Pandas Excel读写操作
32.Pandas index操作索引
33.Pandas分层索引入门教程
34.Pandas执行SQL操作
35.Pandas和NumPy的比较
36.Pandas使用的注意事项
 

 
Pandas concat连接操作
23 次浏览
1次  

Pandas 通过 concat() 函数能够轻松地将 Series 与 DataFrame 对象组合在一起,函数的语法格式如下:

 pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False)

参数说明如下所示:

参数名称 说明
objs 一个序列或者是Series、DataFrame对象。
axis 表示在哪个轴方向上(行或者列)进行连接操作,默认 axis=0 表示行方向。
join 指定连接方式,取值为{"inner","outer"},默认为 outer 表示取并集,inner代表取交集。
ignore_index 布尔值参数,默认为 False,如果为 True,表示不在连接的轴上使用索引。
join_axes 表示索引对象的列表。

concat()

concat() 函数用于沿某个特定的轴执行连接操作。下面让我们创建不同的对象,并对其进行连接。

1.import pandas as pd
2.a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
3.                    'B': ['B0', 'B1', 'B2', 'B3'],
4.                   'C': ['C0', 'C1', 'C2', 'C3'],
5.                  'D': ['D0', 'D1', 'D2', 'D3']},
6.                    index=[0, 1, 2, 3])
7. 
8.b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
9.                    'B': ['B4', 'B5', 'B6', 'B7'],
10.                  'C': ['C4', 'C5', 'C6', 'C7'],
11.                    'D': ['D4', 'D5', 'D6', 'D7']},
12. 
13. #连接a与b
14. print(pd.concat([a,b]))

输出结果:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7

如果想把指定的键与 DataFrame 对象连接,您可以使用 keys 参数来实现。如下所示:

1. import pandas as pd
2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
3.                    'B': ['B0', 'B1', 'B2', 'B3'],
4.                   'C': ['C0', 'C1', 'C2', 'C3'],
5.                  'D': ['D0', 'D1', 'D2', 'D3']},
6.                    index=[0, 1, 2, 3])
7. 
8. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
9.                    'B': ['B4', 'B5', 'B6', 'B7'],
10.                  'C': ['C4', 'C5', 'C6', 'C7'],
11.                    'D': ['D1', 'D2', 'D5', 'D6']},
12. index=[2,3,4,5])
13. 
14. #连接a与b,并给a,b连接一个指定的键
15. print(pd.concat([a,b],keys=['x','y']))

输出结果:

      A   B   C   D
x 0  A0  B0  C0  D0
  1  A1  B1  C1  D1
  2  A2  B2  C2  D2
  3  A3  B3  C3  D3
y 2  A4  B4  C4  D1
  3  A5  B5  C5  D2
  4  A6  B6  C6  D5
  5  A7  B7  C7  D6

上述示中,可以看出行索引 index 存在重复使用的现象,如果想让输出的行索引遵循依次递增的规则,那么需要将 ignore_index 设置为 True。

1. import pandas as pd
2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
3.                    'B': ['B0', 'B1', 'B2', 'B3'],
4.                   'C': ['C0', 'C1', 'C2', 'C3'],
5.                  'D': ['D0', 'D1', 'D2', 'D3']},
6.                    index=[0, 1, 2, 3])
7. 
8. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
9.                    'B': ['B4', 'B5', 'B6', 'B7'],
10.                  'C': ['C4', 'C5', 'C6', 'C7'],
11.                    'D': ['D1', 'D2', 'D5', 'D6']},
12. index=[2,3,4,5])
13. 
14. #连接a与b,设置 ignore_index 等于 True
15. print(pd.concat([a,b],keys=['x','y'],ignore_index=True))

输出结果:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D1
5  A5  B5  C5  D2
6  A6  B6  C6  D5
7  A7  B7  C7  D6

注意:此时的索引顺序被改变了,而且键 keys 指定的键也被覆盖了。

如果您想要沿着 axis=1 添加两个对象,那么将会追加新的列。

1. import pandas as pd
2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
3.                    'B': ['B0', 'B1', 'B2', 'B3'],
4.                   'C': ['C0', 'C1', 'C2', 'C3'],
5.                  'D': ['D0', 'D1', 'D2', 'D3']},
6.                    index=[0, 1, 2, 3])
7. 
8. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
9.                    'B': ['B4', 'B5', 'B6', 'B7'],
10.                  'C': ['C4', 'C5', 'C6', 'C7'],
11.                    'D': ['D1', 'D2', 'D5', 'D6']},
12. index=[4,5,6,7])
13. 
14. #沿着 axis=1,连接a与b
15. print(pd.concat([a,b],axis=1))

输出结果:

     A    B    C    D    A    B    C    D
0   A0   B0   C0   D0  NaN  NaN  NaN  NaN
1   A1   B1   C1   D1  NaN  NaN  NaN  NaN
2   A2   B2   C2   D2  NaN  NaN  NaN  NaN
3   A3   B3   C3   D3  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN   A4   B4   C4   D1
5  NaN  NaN  NaN  NaN   A5   B5   C5   D2
6  NaN  NaN  NaN  NaN   A6   B6   C6   D5
7  NaN  NaN  NaN  NaN   A7   B7   C7   D6

append()

如果要连接 Series 和 DataFrame 对象,有一个最方便、快捷的方法,那就是 append() 方法。该方法沿着 axis=0 (行方向)进行操作。

1. import pandas as pd
2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
3.                    'B': ['B0', 'B1', 'B2', 'B3'],
4.                   'C': ['C0', 'C1', 'C2', 'C3'],
5.                  'D': ['D0', 'D1', 'D2', 'D3']},
6.                    index=[0, 1, 2, 3])
7. 
8. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
9.                    'B': ['B4', 'B5', 'B6', 'B7'],
10.                  'C': ['C4', 'C5', 'C6', 'C7'],
11.                    'D': ['D1', 'D2', 'D5', 'D6']},
12. index=[4,5,6,7])
13. #沿着 axis=0,使用 apppend()方法连接a与b
14. print(a.append(b))

输出结果:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D1
5  A5  B5  C5  D2
6  A6  B6  C6  D5
7  A7  B7  C7  D6

当然 append() 函数也可接收多个对象,示例如下:

1. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
2. 'B': ['B0', 'B1', 'B2', 'B3'],
3. 'C': ['C0', 'C1', 'C2', 'C3'],
4. 'D': ['D0', 'D1', 'D2', 'D3']},
5. index=[0, 1, 2, 3])
6. 
7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
8. 'B': ['B4', 'B5', 'B6', 'B7'],
9. 'C': ['C4', 'C5', 'C6', 'C7'],
10. 'D': ['D1', 'D2', 'D5', 'D6']},
11. index=[4,5,6,7])
12 .c= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
13. 'B': ['B8', 'B9', 'B10', 'B7'],
14. 'C': ['C9', 'C8', 'C7', 'C6'],
15. 'D': ['D8', 'D5', 'D7', 'D6']},
16. index=[8,9,10,11])
17. print(a.append(b,c,a))

输出结果:

    A    B   C   D
0   A0   B0  C0  D0
1   A1   B1  C1  D1
2   A2   B2  C2  D2
3   A3   B3  C3  D3
4   A4   B4  C4  D1
5   A5   B5  C5  D2
6   A6   B6  C6  D5
7   A7   B7  C7  D6
8   A4   B8  C9  D8
9   A5   B9  C8  D5
10  A6   B10 C7  D7
11  A7   B7  C6  D6
0   A0   B0  C0  D0
1   A1   B1  C1  D1
2   A2   B2  C2  D2
3   A3   B3  C3  D3


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



23 次浏览
1次