关键词

详解pandas.merge()(合并数据框)函数使用方法

pandas.merge()是一个在pandas库中用于合并、连接和 join 数据集的函数。这个函数能够参考多个键来合并不同数据集的行。具体而言,merge()函数根据列之间的关系来合并 DataFrame 对象。

merge()函数的语法如下所示:

pandas.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, validate=None)

下面分别说明每个参数的功能:

  • left:一个 DataFrame 对象,即“左” 数据集
  • right:一个 DataFrame 对象,即“右” 数据集
  • on:连接键。作为合并的键。必须存在于左、右两个DataFrame对象里
  • left_on:左DataFrame对象的连接键
  • right_on:右DataFrame对象的连接键
  • left_index:如果设为 True,则使用左 DataFrame 对象的索引作为连接键
  • right_index:如果设为 True,则使用右 DataFrame 对象的索引作为连接键
  • how:合并方式,可以是下列其中之一:'left','right','outer','inner'。默认值是 'inner'
  • sort:根据连接键对合并后的数据进行排序。默认值是 True
  • copy:如果设为 True,则复制数据。默认值是 True
  • validate:允许指定连接类型,'one_to_one', 'one_to_many', 'many_to_one', 'many_to_many', 默认是 None
  • suffixes:代表合并后的数据中同名列名的后缀, 默认取('_x', '_y')
  • indicator:方法实际上会将合并后的数据集增加一列,默认的列名是"_merge"。它的作用是让我们知道每一行数据的来源,如果来自 left,值就是 left_only,如果来自 right,值就是 right_only,如果是两者都有,值就是 both

上面的参数有很多,如果不理解可以多次使用返回值浅阅读影响,有利于熟悉参数和现象之间关系。

下面分别用两个实例来讲解 merge() 函数的使用方法:

例 1 :合并单个连接键的 DataFrame 对象

下面我们将使用以下两个 DataFrame 对象:

left       right
 key value   key value
  1   10      1   20
  2   20      2   30

代码如下所示:

import pandas as pd

# 两个 DataFrame 对象
left = pd.DataFrame({
    'key': [1, 2],
    'value': [10, 20]
})
right = pd.DataFrame({
    'key': [1, 2],
    'value': [20, 30]
})
result = pd.merge(left, right, on='key')
print(result)

打印结果如下:

 key value_x value_y
  1      10       20
  2      20       30

上述实例的做法是,以 'key' 列为连接键,在结果的 DataFrame 中通过列名 'value_x' 和 'value_y' 分别表示两个原始 DataFrame 对象中的列。

例 2 :合并多个连接键的 DataFrame 对象

下面我们将使用以下两个 DataFrame 对象:

df1          df2
 key1 key2    key1 key2
  1     a      1     a
  2     b      2     b
  3     c      4     c

代码实例如下:

import pandas as pd

# 两个DataFrame对象
df1 = pd.DataFrame({
    'key1': [1, 2, 3],
    'key2': ['a', 'b', 'c'],
    'value1': [10, 20, 30]
})
df2 = pd.DataFrame({
    'key1': [1, 2, 4],
    'key2': ['a', 'b', 'c'],
    'value2': [40, 50, 60]
})
result = pd.merge(df1, df2, on=['key1', 'key2'])
print(result)

执行上述代码,得到如下输出:

 key1 key2 value1 value2
  1    a    10     40
  2    b    20     50

上述实例的做法是,使用 'key1' 和 'key2' 两列作为连接键,在结果的 DataFrame 中成对的列也被用来表示它们来自的各个原始 DataFrame 对象。(当然,这里只是对于连接键的合并,还有很多合并的方式需要读者慢慢去总结理解,毕竟细节点万事通。。。)

本文简单讲解了 pandas.merge() 函数的语法、参数和合并方式,同时给出了两个实例来更好的理解当中的细节。

本文链接:http://task.lmcjl.com/news/17637.html

展开阅读全文