龙空技术网

Python数据处理:concat与append快速合并数据「附源码」

LIFE与Python 573

前言:

此时咱们对“python合并数据文件”都比较关心,你们都需要剖析一些“python合并数据文件”的相关文章。那么小编也在网络上汇集了一些对于“python合并数据文件””的相关内容,希望看官们能喜欢,咱们一起来学习一下吧!

前言:

将不同的数据源进行合并是数据科学中最有趣的事情之一,将两个不同的数据集非常简单地拼接在一起,Pandas 的函数与方法让数据合并变得快速简单。

一、介绍concat函数

pd.concat函数使用非常的简单,但是你可以看到它的参数比一般的函数要多,下面用一些例子,来证明这些参数怎么用。

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)

二、通过pd.concat合并Series:

ser1= pd.Series(['张三', '李四', '王五'],index=[1, 2, 3])ser2= pd.Series(['小明', '小华', '小花'], index=[1, 2, 3])pd.concat([ser1, ser2])

代码结果:

1 张三2 李四3 王五1 小明2 小华3 小花dtype: object

三、通过pd.concat合并DataFrame

df1= pd.DataFrame({'a':['张三', '李四', '王五'], 'b':['赵六','王七','周八']})df2= pd.DataFrame({'a':['小明', '小花', '小华'], 'b':['小王','小黑','小白']})pd.concat([df1, df2])

​​代码结果:

默认情况下,DataFrame 的合并都是逐行进行的(默认设置是 axis=0)。pd.concat 也可以设置合并按列(axis=1)

pd.concat([df1, df2], axis=1)

​​代码结果:

四、concat函数常用参数使用:

保留索引:

Pandas在合并时会保留索引,即使索引是重复的也会保留。

x= df1y= df2pd.concat([x, y])

​​代码结果:

捕捉索引重复:

如果你想要检测 pd.concat() 合并的结果中是否出现了重复的索引,可以设置 verify_integrity 参数。将参数设置为True,合并时若有索引重复就会触发异常。

try: pd.concat([x, y], verify_integrity=True)exceptValueErrorase: print("ValueError:", e)

代码结果:

ValueError: Indexes have overlapping values: Int64Index([0, 1, 2], dtype='int64')
忽略索引:

有时索引无关紧要,那么合并时就可以忽略它们,可以通过设置ignore_index参数来实现。如果将参数设置为True,那么合并时将会创建一个新的整数索引。

pd.concat([x, y], ignore_index=True)

​​代码结果:

增加多级索引:

另一种处理索引重复的方法是通过 keys 参数为数据源设置多级索引标签,这样结果数据就会带上多级索引.

pd.concat([x, y], keys=['x', 'y'])

​​代码结果:

类似join的合并方法:

在实际工作中,需要合并的数据往往带有不同的列名,而pd.concat提供了一些选项来解决这类合并问题。

df5= pd.DataFrame({'员工': ['张三', '李四', '王五'], '职务': ['经理', '主管', '工程师']})df6= pd.DataFrame({'员工': ['张三', '李四', '赵六'], '入职': [2004, 2008, 2012]})pd.concat([df5, df6],sort=True)

​代码结果:

pd.concat([df5, df6], join='inner')

​代码结果:

默认情况下,某个位置上缺失的数据会用 NaN 表示。如果不想这样,可以用 join 和 join_ axes 参数设置合并方式。当然也可以用 join='inner' 实现对输入列的交集合并。

另一种合并方式是设置 join_axes 参数,保留与df5的列标签一样的数据

pd.concat([df5, df6], join_axes=[df5.columns])

​​代码结果:

append()方法:

Series对象、DataFrame 对象都支持 append 方法,通过最少的代码实现合并功能。

Series对象

ser1.append(ser2)

代码结果:

1 张三2 李四3 王五1 小明2 小华3 小花dtype: object
DataFrame 对象
df5.append(df6,sort=True)

​代码结果:

df5.append(df6)的效果与 pd.concat([df5, df6])一样,但是与Python 列表中的 append() 和 extend() 方法不同,Pandas 的 append() 不直接更新原有对象的值,而是为合并后的数据创建一个新对象。

总结:

1.axis=0, 对行操作 axis=1 ,对列操作。

2. join='outer', 取交集集 ,join='inner'取并集 。

3. join_axes=[df5.columns],保留与df5的列标签一样的数据。

4. ignore_index=False, 保留原索引 ignore_index=True,忽略原索引并生成新索引。

5. keys=['x', 'y'']为数据源设置多级索引标签。

标签: #python合并数据文件