Pandas教程-Pandas 连接操作
Pandas能够通过不同种类的集合逻辑和关系代数功能组合Series、DataFrame和Panel对象。
concat()函数负责在DataFrame中沿轴执行连接操作。
语法:
pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
参数:
objs: 它是一个序列或映射,包含Series或DataFrame对象。
如果在DataFrame中传递了一个字典,那么排序后的键将用作keys参数,并且将选择相应的值。如果存在任何非对象,那么它们将被丢弃,除非它们全部为none,在这种情况下,将引发ValueError。
- axis: 沿着其进行连接的轴。
- join: 处理另一个轴上的索引的方式。
- join_axes: 索引对象的列表。使用特定索引,而不是执行内部或外部集合逻辑。
- ignore_index: 布尔值,默认值为False。如果为True,则不使用连接轴上的索引值。结果轴将标记为0,...,n - 1。
返回值
在沿轴(axis=0)连接所有Series时,返回一个Series。如果*objs*包含至少一个DataFrame,则返回一个DataFrame。
示例1:
import pandas as pd
a_data = pd.Series(['p', 'q'])
b_data = pd.Series(['r', 's'])
pd.concat([a_data, b_data])
输出
0 p
1 q
0 r
1 s
dtype: object
示例2: 在上面的示例中,我们可以通过使用ignore_index参数来重置现有索引。下面的代码演示了ignore_index的工作原理。
import pandas as pd
a_data = pd.Series(['p', 'q'])
b_data = pd.Series(['r', 's'])
pd.concat([a_data, b_data], ignore_index=True)
输出
0 p
1 q
2 r
3 s
dtype: object
示例3: 我们可以通过使用keys参数在数据的最外层级别添加层次索引。
import pandas as pd
a_data = pd.Series(['p', 'q'])
b_data = pd.Series(['r', 's'])
pd.concat([a_data, b_data], keys=['a_data', 'b_data'])
输出
a_data 0 p
1 q
b_data 0 r
1 s
dtype: object
示例4: 我们可以使用names参数为索引键标签命名。下面的代码展示了names参数的工作原理。
import pandas as pd
a_data = pd.Series(['p', 'q'])
b_data = pd.Series(['r', 's'])
pd.concat([a_data, b_data], keys=['a_data', 'b_data'])
pd.concat([a_data, b_data], keys=['a_data', 'b_data'],
names=['Series name', 'Row ID'])
输出
Series name Row ID
a_data 0 p
1 q
b_data 0 r
1 s
dtype: object
使用append进行连接
append方法被定义为连接Series和DataFrame的有用快捷方式。
示例:
import pandas as pd
one = pd.DataFrame({
'Name': ['Parker', 'Smith', 'Allen', 'John', 'Parker'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print (one.append(two))
输出
Name subject_id Marks_scored
1 Parker sub1 98
2 Smith sub2 90
3 Allen sub4 87
4 John sub6 69
5 Parker sub5 78
1 Billy sub2 89
2 Brian sub4 80
3 Bran sub3 79
4 Bryce sub6 97
5 Betty sub5 88