Pandas concat()例子
时间:2020-02-23 14:42:05 来源:igfitidea点击:
Pandas concat()方法用于连接pandas对象,例如DataFrames和Series。
我们可以传递各种参数来更改串联操作的行为。
1. Pandas concat()语法
concat()方法的语法为:
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)
objs:一系列要连接的熊cat 对象。
join:可选参数,用于定义如何处理另一轴上的索引。
有效值为"内部"和"外部"。join_axes:在0.25.0版中已弃用。
ignore_index:如果为True,则将忽略源对象的索引,并将从0,1,2..n开始的一系列索引分配给结果。
键:将标识符添加到结果索引的序列。
这有助于在输出中标记源对象。级别:指定创建多索引的唯一级别的序列。
names:结果层次索引中各个级别的名称。
verify_integrity:检查新的串联轴是否包含重复项。
这是一项昂贵的操作。sort:如果联接为"外部"时未对齐轴,则对非串联轴进行排序。
在版本0.23.0中添加复制:如果为False,则不必复制数据。
推荐读物:Python Pandas教程
2. Pandas concat()示例
让我们看一个连接两个DataFrame对象的简单示例。
import pandas d1 = {"Name": ["hyman", "Lisa"], "ID": [1, 2]} d2 = {"Name": "David", "ID": 3} df1 = pandas.DataFrame(d1, index={1, 2}) df2 = pandas.DataFrame(d2, index={3}) print('\n', df1) print('\n', df2) df3 = pandas.concat([df1, df2]) print('\n', df3)
输出:
Name ID 1 hyman 1 2 Lisa 2 Name ID 3 David 3 Name ID 1 hyman 1 2 Lisa 2 3 David 3
请注意,串联是按行(即0轴)执行的。
此外,来自源DataFrame对象的索引也保留在输出中。
3.沿列(即1轴)连接
d1 = {"Name": ["hyman", "Lisa"], "ID": [1, 2]} d2 = {"Role": ["Admin", "Editor"]} df1 = pandas.DataFrame(d1, index={1, 2}) df2 = pandas.DataFrame(d2, index={1, 2}) df3 = pandas.concat([df1, df2], axis=1) print('\n', df3)
输出:
Name ID Role 1 hyman 1 Admin 2 Lisa 2 Editor
当源对象包含对象的不同种类的数据时,沿着列的串联是有意义的。
4.将关键字分配给串联的DataFrame索引
d1 = {"Name": ["hyman", "Lisa"], "ID": [1, 2]} d2 = {"Name": "David", "ID": 3} df1 = pandas.DataFrame(d1, index={1, 2}) df2 = pandas.DataFrame(d2, index={3}) df3 = pandas.concat([df1, df2], keys=["DF1", "DF2"]) print('\n', df3)
输出:
Name ID DF1 1 hyman 1 2 Lisa 2 DF2 3 David 3
5.忽略串联中的源DataFrame对象
d1 = {"Name": ["hyman", "Lisa"], "ID": [1, 2]} d2 = {"Name": "David", "ID": 3} df1 = pandas.DataFrame(d1, index={10, 20}) df2 = pandas.DataFrame(d2, index={30}) df3 = pandas.concat([df1, df2], ignore_index=True) print('\n', df3)
输出:
Name ID 0 hyman 1 1 Lisa 2 2 David 3
当源对象中的索引没有太大意义时,这很有用。
因此我们可以忽略它们,并将默认索引分配给输出DataFrame。