pandas 拼接

pandas 拼接

pandas 拼接

1. 概述

数据处理是数据分析的基础,而数据拼接是数据处理中的一个重要环节。在实际的数据分析工作中,经常会遇到需要将多个数据源进行拼接的情况,这时就需要用到 pandas 提供的拼接方法。

pandasPython 中用于数据分析的强大库,它提供了多种方法来拼接不同数据源的数据。本文将详细介绍 pandas 中的拼接方法和使用示例。

2. 拼接方法

pandas 提供了三种常用的拼接方法,分别是 concat()merge()join()。下面将逐一介绍这些方法。

2.1 concat() 方法

concat() 方法用于按照指定的轴将多个数据源进行拼接。它的基本语法如下:

pandas.concat(objs, axis=0, join='outer', ignore_index=False)

其中,各参数的含义如下:

  • objs:要拼接的 pandas 对象的序列,可以是 DataFrame、Series 或 Panel 对象。
  • axis:拼接的轴向,默认为 0,表示按行拼接。
  • join:拼接方式,可选值为 ‘inner’ 和 ‘outer’,默认为 ‘outer’。如果设置为 ‘inner’,则只保留相同索引或列名的数据。
  • ignore_index:是否忽略原始索引或列名,默认为 False。如果设置为 True,将重新生成新的索引或列名。

2.2 merge() 方法

merge() 方法用于根据一个或多个键(key)将两个数据源的列进行拼接。它的基本语法如下:

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None)

其中,各参数的含义如下:

  • leftright:要拼接的两个 DataFrame 对象。
  • how:拼接方式,可选值为 ‘inner’、’outer’、’left’ 和 ‘right’,默认为 ‘inner’。具体含义参见下文。
  • on:用于拼接的列名,如果两个 DataFrame 对象的列名不同,可以分别指定左右 DataFrame 对象的列名。
  • left_onright_on:用于拼接的左右 DataFrame 对象的列名,可分别指定。

2.3 join() 方法

join() 方法用于根据索引将两个数据源的列进行拼接。它的基本语法如下:

pandas.DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='')

其中,各参数的含义如下:

  • other:要拼接的另一个 DataFrame 对象。
  • on:用于拼接的索引名。
  • how:拼接方式,可选值为 ‘left’、’right’、’inner’ 和 ‘outer’,默认为 ‘left’。具体含义参见下文。
  • lsuffixrsuffix:仅当两个 DataFrame 对象的列有重复时使用,用于区分重复列的后缀。

3. 拼接方式

上述拼接方法中的 how 参数对拼接方式进行了设置,可选值为 ‘inner’、’outer’、’left’ 和 ‘right’,下面将具体介绍这些拼接方式的含义。

3.1 inner

inner 拼接方式表示取两个数据源公共部分的交集。它将只拼接那些在两个数据源中都存在的行或列。

示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [4, 7], 'C': [8, 9]})

result = pd.concat([df1, df2], axis=1, join='inner')
print(result)

运行结果为:

   A  B  B  C
0  1  4  4  8

3.2 outer

outer 拼接方式表示取两个数据源的并集。它将拼接那些在任意一个数据源中存在的行或列,不存在的部分用 NaN 填充。

示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [4, 7], 'C': [8, 9]})

result = pd.concat([df1, df2], axis=1, join='outer')
print(result)

运行结果为:

     A  B    B    C
0  1.0  4  4.0  8.0
1  2.0  5  NaN  NaN
2  3.0  6  NaN  NaN
3  NaN  7  NaN  9.0

3.3 left

left 拼接方式表示取左边数据源的所有行或列,且包含右边数据源中匹配的部分。

示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [4, 7], 'C': [8, 9]})

result = pd.merge(df1, df2, how='left', on='B')
print(result)

运行结果为:

   A  B    C
0  1  4  8.0
1  2  5  NaN
2  3  6  NaN

3.4 right

right 拼接方式表示取右边数据源的所有行或列,且包含左边数据源中匹配的部分。

示例代码如下:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [4, 7], 'C': [8, 9]})

result = pd.merge(df1, df2, how='right', on='B')
print(result)

运行结果为:

     A  B  C
0  1.0  4  8
1  NaN  7  9

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程