pandas append deprecated

pandas append deprecated

参考:pandas append deprecated

在数据分析和数据处理中,pandas 是 Python 中最受欢迎的库之一。它提供了大量的功能来处理和分析数据,其中 DataFrame.append() 方法长期以来一直是合并数据的常用方法。然而,从 pandas 1.4.0 版本开始,append() 方法已被官方标记为弃用(deprecated),推荐使用更为强大和灵活的 concat() 函数或直接使用 DataFrameconcat 方法来替代。本文将详细介绍 append() 方法的弃用原因、替代方案以及如何迁移到新的方法。

弃用原因

DataFrame.append() 方法在功能上与 concat() 函数重叠,但 concat() 提供了更多的灵活性和控制,特别是在处理大型数据集时。append() 方法在内部实际上是调用了 concat(),但其默认行为和参数设置较为简单,这限制了其在复杂数据合并场景下的应用。因此,为了简化 API 并鼓励用户使用更强大的 concat() 方法,pandas 开发团队决定逐步弃用 append()

使用 concat() 替代 append()

concat() 函数不仅能够替代 append() 完成相同的任务,还能提供更多的参数设置,如处理索引、处理多个对象合并等。下面通过一系列示例来展示如何使用 concat() 替代 append()

示例 1:基本的 DataFrame 合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

# 使用 concat 替代 append
result = pd.concat([df1, df2])
print(result)

Output:

pandas append deprecated

示例 2:保留索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

# 使用 concat 替代 append,保留原始索引
result = pd.concat([df1, df2], ignore_index=False)
print(result)

Output:

pandas append deprecated

示例 3:不保留索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

# 使用 concat 替代 append,不保留原始索引
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

pandas append deprecated

示例 4:沿不同轴合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'E': ['E0', 'E1', 'E2', 'E3'],
    'F': ['F0', 'F1', 'F2', 'F3'],
    'G': ['G0', 'G1', 'G2', 'G3'],
    'H': ['H0', 'H1', 'H2', 'H3']
}, index=[0, 1, 2, 3])

# 使用 concat 替代 append,沿列方向合并
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

pandas append deprecated

示例 5:合并多个 DataFrame

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

df3 = pd.DataFrame({
    'A': ['A8', 'A9', 'A10', 'A11'],
    'B': ['B8', 'B9', 'B10', 'B11'],
    'C': ['C8', 'C9', 'C10', 'C11'],
    'D': ['D8', 'D9', 'D10', 'D11']
}, index=[8, 9, 10, 11])

# 使用 concat 替代 append,合并多个 DataFrame
result = pd.concat([df1, df2, df3])
print(result)

Output:

pandas append deprecated

示例 6:添加单行

import pandas as pd

# 创建一个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
})

# 创建一个 Series,作为新行
new_row = pd.Series(['A4', 'B4', 'C4', 'D4'], index=['A', 'B', 'C', 'D'])

# 使用 concat 替代 append 添加单行
result = pd.concat([df1, pd.DataFrame([new_row])], ignore_index=True)
print(result)

Output:

pandas append deprecated

示例 7:合并具有不同列的 DataFrame

import pandas as pd

# 创建两个 DataFrame,列不完全相同
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3']
})

df2 = pd.DataFrame({
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
})

# 使用 concat 替代 append,合并具有不同列的 DataFrame
result = pd.concat([df1, df2], sort=False)
print(result)

Output:

pandas append deprecated

示例 8:处理合并时的重复索引

import pandas as pd

# 创建两个 DataFrame,具有重复的索引
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7']
}, index=[2, 3, 4, 5])

# 使用 concat 替代 append,处理合并时的重复索引
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

pandas append deprecated

示例 9:使用 keys 参数创建多级索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3']
})

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7']
})

# 使用 concat 替代 append,使用 keys 参数创建多级索引
result = pd.concat([df1, df2], keys=['df1', 'df2'])
print(result)

Output:

pandas append deprecated

示例 10:合并时使用不同的 join 类型

import pandas as pd

# 创建两个 DataFrame,列不完全相同
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
})

df2 = pd.DataFrame({
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7']
})

# 使用 concat 替代 append,使用不同的 join 类型
result = pd.concat([df1, df2], join='inner')
print(result)

Output:

pandas append deprecated

以上示例展示了如何使用 concat() 函数来替代 append() 方法进行数据的合并和处理。通过这些示例,可以看到 concat() 提供了更多的灵活性和功能,使得数据合并更加高效和可控。随着 append() 方法的逐步弃用,建议用户逐渐过渡到使用 concat() 来处理数据合并的需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程