pandas append vs concat

pandas append vs concat

参考:pandas append vs concat

在数据分析和数据处理中,经常需要将多个数据集合并为一个大的数据集。Pandas库提供了多种方法来实现这一点,其中最常用的是append()concat()函数。本文将详细介绍这两个函数的用法、区别以及何时使用哪一个更合适。

1. pandas append() 函数

append() 函数是一种快速合并两个DataFrame的方法。它主要用于将一行或多行追加到DataFrame的末尾。这个函数返回一个新的DataFrame,而不会改变原有的DataFrame。

示例代码 1:使用 append() 添加单行

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

new_row = pd.Series(['A3', 'B3'], index=df1.columns, name='pandasdataframe.com')
df2 = df1._append(new_row)
print(df2)

Output:

pandas append vs concat

示例代码 2:使用 append() 添加多行

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

new_rows = pd.DataFrame({
    'A': ['A3', 'A4'],
    'B': ['B3', 'B4']
}, index=['pandasdataframe.com', 'pandasdataframe.com'])

df2 = df1._append(new_rows)
print(df2)

Output:

pandas append vs concat

2. pandas concat() 函数

concat() 函数更加通用,它可以合并两个或多个Pandas对象。不仅限于行的追加,还可以进行列的合并,支持多种连接方式(如内连接、外连接)。

示例代码 3:简单的纵向合并

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5']
})

result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

pandas append vs concat

示例代码 4:横向合并

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

df2 = pd.DataFrame({
    'C': ['C0', 'C1', 'C2'],
    'D': ['D0', 'D1', 'D2']
})

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

Output:

pandas append vs concat

3. append() vs concat()

虽然append()concat()都可以用来合并数据,但它们在使用上有一些重要的区别。

示例代码 5:使用 append() 进行多DataFrame合并

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5']
})

df3 = pd.DataFrame({
    'A': ['A6', 'A7', 'A8'],
    'B': ['B6', 'B7', 'B8']
})

result = df1._append([df2, df3], ignore_index=True)
print(result)

Output:

pandas append vs concat

示例代码 6:使用 concat() 进行多DataFrame合并

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5']
})

df3 = pd.DataFrame({
    'A': ['A6', 'A7', 'A8'],
    'B': ['B6', 'B7', 'B8']
})

result = pd.concat([df1, df2, df3], ignore_index=True)
print(result)

Output:

pandas append vs concat

4. 性能考虑

在处理大型数据集时,性能是一个重要的考虑因素。concat()函数通常比append()函数更高效,特别是在合并大量的DataFrame时。

示例代码 7:比较 append()concat() 的性能

import pandas as pd
import time

# 创建大型数据
data = pd.DataFrame({
    'A': range(10000),
    'B': range(10000)
})

start_time = time.time()
result = pd.DataFrame()
for _ in range(100):
    result = result.append(data, ignore_index=True)
print("Append time:", time.time() - start_time)

start_time = time.time()
result = pd.concat([data]*100, ignore_index=True)
print("Concat time:", time.time() - start_time)

5. 结论

在选择append()concat()时,如果你只是需要追加几行数据,append()可能是一个简单直接的选择。但如果你需要合并大量的数据或者进行复杂的合并操作,concat()将是更好的选择,因为它提供了更多的功能和更好的性能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程