如何使用 Pandas 的concat函数来合并行

如何使用 Pandas 的concat函数来合并行

参考:pandas concat rows

在数据分析和数据处理中,经常需要将多个数据集合并为一个大的数据集。Pandas 是一个强大的 Python 数据分析工具库,它提供了多种数据合并方法,其中 concat() 函数是用来合并数据的常用方法之一。本文将详细介绍如何使用 Pandasconcat() 函数来合并行,包括各种不同的使用场景和示例代码。

1. 基本用法

Pandas 的 concat() 函数可以将多个 DataFrame 或 Series 沿着某个轴合并。默认情况下,concat() 是沿着轴0进行合并,即增加行数。

示例代码 1:基本的行合并

import pandas as pd

# 创建两个DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1'],
    'B': ['B0', 'B1']
}, index=[0, 1])

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
}, index=[2, 3])

# 合并DataFrame
result = pd.concat([df1, df2])
print(result)

Output:

如何使用 Pandas 的concat函数来合并行

2. 索引重置

在合并多个 DataFrame 时,如果不希望保留原来的索引,可以设置 ignore_index=True,这样合并后的 DataFrame 将重新分配索引。

示例代码 2:合并时重置索引

import pandas as pd

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

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
}, index=[2, 3])

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

Output:

如何使用 Pandas 的concat函数来合并行

3. 沿不同轴合并

虽然默认情况下 concat() 是沿着轴0合并,即纵向合并,但也可以设置 axis=1 来进行横向合并。

示例代码 3:横向合并 DataFrame

import pandas as pd

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

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

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

Output:

如何使用 Pandas 的concat函数来合并行

4. 处理不匹配的列

合并具有不同列的 DataFrame 时,Pandas 会自动进行对齐,并在缺失的位置填充 NaN。

示例代码 4:合并具有不同列的 DataFrame

import pandas as pd

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

df2 = pd.DataFrame({
    'B': ['B2', 'B3'],
    'C': ['C2', 'C3']
})

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

Output:

如何使用 Pandas 的concat函数来合并行

5. 使用多层索引

在合并时,可以通过 keys 参数添加多层索引,以便区分不同来源的数据。

示例代码 5:使用多层索引合并

import pandas as pd

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

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
})

result = pd.concat([df1, df2], keys=['df1', 'df2'])
print(result)

Output:

如何使用 Pandas 的concat函数来合并行

6. 合并时使用不同的合并逻辑

通过设置 join 参数,可以控制在横向合并时如何处理不匹配的列。join='outer' 是默认值,表示取并集,join='inner' 则表示取交集。

示例代码 6:使用内连接合并

import pandas as pd

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

df2 = pd.DataFrame({
    'B': ['B2', 'B3'],
    'C': ['C2', 'C3']
})

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

Output:

如何使用 Pandas 的concat函数来合并行

7. 添加额外的列

在合并 DataFrame 时,有时可能需要添加额外的列来标识或区分数据的来源。

示例代码 7:合并时添加额外的列

import pandas as pd

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

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
})

df1['Source'] = 'Source 1'
df2['Source'] = 'Source 2'

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

Output:

如何使用 Pandas 的concat函数来合并行

8. 使用 append 方法

除了 concat() 函数外,Pandas 还提供了 append() 方法,可以实现类似的功能,用于追加行。

示例代码 8:使用 append 方法合并

import pandas as pd

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

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
})

result = df1.append(df2, ignore_index=True)
print(result)

9. 处理大量 DataFrame 的合并

当需要合并大量的 DataFrame 时,可以使用列表推导式或循环来生成 DataFrame 列表,然后一次性使用 concat() 进行合合并。

示例代码 9:合并大量 DataFrame

import pandas as pd

# 假设有10个DataFrame,每个都有相同的结构
dataframes = [pd.DataFrame({
    'A': [f'A{i}', f'A{i+1}'],
    'B': [f'B{i}', f'B{i+1}']
}) for i in range(0, 20, 2)]

result = pd.concat(dataframes, ignore_index=True)
print(result)

Output:

如何使用 Pandas 的concat函数来合并行

10. 总结

本文详细介绍了使用 Pandas 的 concat() 函数进行行合并的多种方法和技巧。通过多个示例代码,展示了如何处理不同的合并场景,包括索引重置、不同轴向的合并、处理不匹配的列、使用多层索引、添加额外的列等。掌握这些技巧可以帮助你在进行数据分析时更加灵活地处理和合并数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程