📜  pandas concat 系列进入数据框 - Python (1)

📅  最后修改于: 2023-12-03 15:18:13.513000             🧑  作者: Mango

Pandas Concat 系列进入数据框 - Python

在数据分析中,我们常常需要将多个数据框按照一定的方式合并在一起,这时就需要用到 Pandas concat 系列。下面来介绍一下如何使用 Pandas concat 系列将多个数据框合并。

1. 连接方式

Pandas concat 系列主要有三种连接方式:concatenate、merge 和 join。其中:

  • concatenate 将多个数据框沿着某个轴连接起来,相当于直接拼接数据框,不进行任何对齐和合并操作;
  • merge 用于基于某些键连接数据框,相当于 SQL 中的 JOIN 操作;
  • join 则是一种便捷的基于索引的连接方式,相当于将两个数据框的索引进行对齐后合并。
2. concatenate 用法详解

下面是 Pandas concatenate 的基本用法:

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
  • objs:要合并的数据框列表或字典;
  • axis:连接的轴方向,0 为竖直方向(按行拼接),1 为水平方向(按列拼接);
  • join:连接方式,'outer' 为并集,'inner' 为交集;
  • ignore_index:是否忽略原来数据框的索引;
  • keys:用于形成层次化索引的键,列表或元组类型;
  • levels:目标轴上的级别,递归使用;
  • names:创建层次化索引时使用的名称列表,列表类型;
  • verify_integrity:检查结果数据框是否重复;
  • copy:是否复制数据。

下面是一个简单的样例:

import numpy as np
import pandas as pd

arr1 = np.random.randint(low=0, high=5, size=10).reshape(5, 2)
arr2 = np.random.randint(low=0, high=5, size=10).reshape(5, 2)

df1 = pd.DataFrame(arr1, columns=['A', 'B'])
df2 = pd.DataFrame(arr2, columns=['C', 'D'])

print(df1)
print(df2)

# 按行拼接(竖直方向)
df3 = pd.concat([df1, df2], axis=0)
print(df3)

# 按列拼接(水平方向)
df4 = pd.concat([df1, df2], axis=1)
print(df4)

# 忽略原来数据框的索引
df5 = pd.concat([df1, df2], axis=1, ignore_index=True)
print(df5)

# 创建层次化索引
df6 = pd.concat([df1, df2], keys=['df1', 'df2'])
print(df6)
3. merge 用法详解

下面是 Pandas 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, validate=None)
  • left:左数据框;
  • right:右数据框;
  • how:连接方式,'left' 表示左连接,'right' 表示右连接,'outer' 表示并集,'inner' 表示交集;
  • on:用于连接的列名,必须在左右数据框中同时存在;
  • left_on:左数据框用于连接的列名,若列名不同需要指定;
  • right_on:右数据框用于连接的列名,若列名不同需要指定;
  • left_index:是否使用左数据框的行索引作为连接键;
  • right_index:是否使用右数据框的行索引作为连接键;
  • sort:是否排序;
  • suffixes:重复列的后缀名,列表类型;
  • copy:是否复制数据;
  • indicator:是否用 indicator 列标志出数据来源;
  • validate:验证合并方式是否合理。

下面是一个简单的样例:

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

print(df1)
print(df2)

# 内连接
df3 = pd.merge(df1, df2, on='key', how='inner')
print(df3)

# 左连接
df4 = pd.merge(df1, df2, on='key', how='left')
print(df4)

# 指定后缀名
df5 = pd.merge(df1, df2, on='key', how='outer', suffixes=('_left', '_right'))
print(df5)
4. join 用法详解

下面是 Pandas join 的基本用法:

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
  • other:要连接的另一个数据框;
  • on:用于连接的列名;
  • how:连接方式,'left' 表示左连接,'right' 表示右连接,'outer' 表示并集,'inner' 表示交集;
  • lsuffix:重复列的后缀名,左数据框中列名相同时用到;
  • rsuffix:重复列的后缀名,右数据框中列名相同时用到;
  • sort:是否排序。

下面是一个简单的样例:

arr1 = np.random.randint(low=0, high=5, size=5).reshape(5, 1)
arr2 = np.random.randint(low=0, high=5, size=5).reshape(5, 1)

df1 = pd.DataFrame(arr1, columns=['A'])
df2 = pd.DataFrame(arr2, columns=['B'])

print(df1)
print(df2)

# 内连接
df3 = df1.join(df2, how='inner')
print(df3)

# 并集
df4 = df1.join(df2, how='outer')
print(df4)
总结

本文介绍了 Pandas concat 系列的常见用法,包括 concatenate、merge 和 join 三种连接方式。在数据分析中,我们常常需要将多个数据框合并在一起,掌握 Pandas concat 系列的用法可以让我们事半功倍。