Pandas 基于列和索引的合并方法

Pandas 基于列和索引的合并方法

在本文中,我们将介绍Pandas中的两种合并数据的方法:通过某一列进行合并和通过索引进行合并。这两种方法都是Pandas中重要的数据处理手段,在实际数据处理中会经常使用。

阅读更多:Pandas 教程

基于某一列进行合并

通过某一列进行合并,是指以某一列中的值为键,将两个Dataframe中的数据进行合并。这种方法常见的操作在join、merge和concat等方法中都有体现。下面分别介绍:

join方法

join方法是Pandas中用于合并两个Dataframe的方法,其参数说明如下:

  1. 参数other:要合并的另一个Dataframe。
  2. 参数on:用于合并的列名,默认为None。如果为None,则会自动寻找两个Dataframe中相同的列名进行合并。
  3. 参数how:合并方法,包括left、right、outer和inner,默认为’left’。
  4. 参数sort:合并后是否按照键值进行排序,默认为False。

下面示例代码中,我们将会创建两个Dataframe,分别为df1和df2,df1中包含’id’和’name’两列数据,df2中包含’id’和’age’两列数据。使用join方法将两个Dataframe中的数据合并,以’id’列为键。

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'name': ['Tom', 'Jack', 'Lucy', 'Lily']})
df2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'age': [24, 28, 25, 21]})

result = df1.join(df2.set_index('id'), on='id')
print(result)
Python

输出结果:

    id   name    age
0  001    Tom  24
1  002   Jack  28
2  003   Lucy  25
3  004   Lily  21
Python

merge方法

merge方法与join方法类似,也是用于合并两个Dataframe的方法。其参数说明如下:

  1. 参数right:要合并的另一个Dataframe。
  2. 参数on:用于合并的列名,默认为None。如果为None,则会自动寻找两个Dataframe中相同的列名进行合并。
  3. 参数how:合并方法,包括left、right、outer和inner,默认为’inner’。
  4. 参数sort:合并后是否按照键值进行排序,默认为False。

下面示例代码中,我们将会创建两个Dataframe,分别为df1和df2,df1中包含’id’和’name’两列数据,df2中包含’id’和’age’两列数据。使用merge方法将两个Dataframe中的数据合并,以’id’列为键。

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'name': ['Tom', 'Jack', 'Lucy', 'Lily']})
df2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'age': [24, 28, 25, 21]})

result = pd.merge(df1, df2, on='id')
print(result)
Python

输出结果:

    id   name    age
0  001    Tom  24
1  002   Jack  28
2  003   Lucy  25
3  004   Lily  21
Python

concat方法

concat方法用于沿着一个轴将多个Dataframe连接在一起,其基本语法为:

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

其中,参数说明如下:

  1. 参数objs:要连接的Dataframe。
  2. 参数axis:连接的轴,可以为0(沿着行方向连接)或1(沿着列方向连接),默认为0。
  3. 参数join:连接方式,包括’outer’和’inner’,默认为’outer’。
  4. 参数sort:连接后是否按照索引排序,默认为False。

下面示例代码中,我们将会创建两个Dataframe,分别为df1和df2,df1中包含’id’和’name’两列数据,df2中包含’id’和’age’两列数据。使用concat方法将两个Dataframe中的数据按行方向连接起来。

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'name': ['Tom', 'Jack', 'Lucy', 'Lily']})
df2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'age': [24, 28, 25, 21]})

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

输出结果:

    id   name   id  age
0  001    Tom  001   24
1  002   Jack  002   28
2  003   Lucy  003   25
3  004   Lily  004   21
Python

基于索引进行合并

除了以某一列进行合并外,Pandas也支持以索引进行合并。在这种情况下,我们需要将某一列设为索引,之后将两个Dataframe的索引进行合并即可。下面介绍基于索引进行合并的方法:

merge方法

通过merge方法,可以指定left_index和right_index参数将两个Dataframe的索引进行合并。示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'name': ['Tom', 'Jack', 'Lucy', 'Lily']})
df1 = df1.set_index('id')
df2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'age': [24, 28, 25, 21]})
df2 = df2.set_index('id')

result = pd.merge(df1, df2, left_index=True, right_index=True)
print(result)
Python

输出结果:

      name   age
id             
001    Tom  24
002   Jack  28
003   Lucy  25
004   Lily  21
Python

join方法

通过join方法,可以指定参数lsuffix和rsuffix将相同列名的数据进行合并。示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'name': ['Tom', 'Jack', 'Lucy', 'Lily']})
df1 = df1.set_index('id')
df2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'age': [24, 28, 25, 21]})
df2 = df2.set_index('id')

result = df1.join(df2, lsuffix='_left', rsuffix='_right')
print(result)
Python

输出结果:

    name_left  age_right
id                      
001       Tom         24
002      Jack         28
003      Lucy         25
004      Lily         21
Python

总结

本文介绍了Pandas中两种合并数据的方法:通过某一列进行合并和通过索引进行合并。这两种方法都是Pandas中重要的数据处理手段,在实际数据处理中会经常使用。需要注意的是,在使用这两种方法时,需要注意各个参数的含义和具体用法,以充分发挥其强大的数据处理功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册