热线电话:13121318867

登录
2018-10-23 阅读量: 1600
pandas中怎么对数据框进行拼接?

由于需要整合两份不同的数据,所以需要使用数据合并的方法。在这之前,一直使用R来对数据框进行操作,python怎么操作?

python中的数据框是pandas中的dataframe数据类型、跟R中的很像。

首先如果要使用pandas库中的函数,在python的前面需要载入这个库:

import pandas as pd

pandas拼接数据框有三个方法

1、append

比较常用方便快捷的拼接是使用append。假设有两个数据框df1与df2,只需要下述操作即可:

df = df1.append(df2)

需要注意的是:这里返回一个拼接后的新的数据框df。

2、concat

还有一种方法concat。

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

其中axis = 0表示上下拼接粘贴行,axis = 1就是左右拼接粘贴列,当然,默认就是0。

直接修改原本的数据框。其实只需要修改其中的一个参数:copy = False即可。此时代码变成:

df = pd.concat([df1, df2], axis = 0, copy = False)

此外还有一些常用操作的参数:

join = 'outer',表示取并;’inner’则是取交。 
ignore_index = Ture,则会重新分配index从0…n-1。

3、merge

merge

同样也可以实现前面的append的操作,只需使用如下的代码即可:

df = pd.merge(df1, df2, left_index = True, right_index = True, how = 'outer') 

merge里面的功能就非常多了,

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False)

left: 用来左连接的dataframe对象
right: 放在右边的dataframe对象
how: 连接方式可以是'left', 'right', 'outer', 'inner'. 默认为inner。
on: 连接的字段名
left_on: 左边dataframe的列会用做keys。可以是列名,
或者与dataframe长度相同的矩阵array。
right_on: 右边同上。
left_index: 如果为Ture,用左侧dataframe的index作为
连接键。如果是多维索引,level数要跟右边相同才行。
right_index: 右边同上。
sort: 对合并后的数据框排序,以连接键。
suffixes: 一个tuple,包字符串后缀,用来加在重叠的列名后面。
默认是('_x','_y')。
copy: 默认Ture,复制数据。
indicator: 布尔型(True/FALSE),或是字符串。
如果为True,合并之后会增加一列叫做'_merge'。
是分类数据,用left_only, right_only, both来标记
来自左边,右边和两边的数据。

这里需要强调一点是:Python中的拼接都是根据列名来进行,如果你有两个不一样的数据框,比如说:一个列名是:['a', 'b', 'c', 'd'],另一列列名是['e', 'f', 'g', 'h'],如果我们想直接像R使用rbind一样使用append等函数,粘上去就会出问题,这时就需要修改一列的列名,例如将一列的列名赋值给另一列的列名。

df1.columns = list(df2)

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子