如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

参考:pandas concat series to dataframe

在数据处理和分析中,经常需要将不同的数据源合并到一起,以便进行更全面的分析。PandasPython 中一个强大的数据分析工具包,它提供了多种数据结构和数据操作方法,使得数据操作更加便捷。本文将详细介绍如何使用 Pandas 中的 concat 函数将 Series 对象合并到 DataFrame 中。

1. 简介

在 Pandas 中,DataFrame 是用于存储表格数据的主要数据结构,而 Series 是一种一维数组结构,可以视为 DataFrame 的单一列。concat 函数是 Pandas 提供的一个功能强大的工具,可以用来沿着一定的轴将多个 pandas 对象合并到一起。使用 concat 函数可以轻松地将多个 Series 合并到一个 DataFrame 中,无论是横向还是纵向。

2. 函数语法和参数

concat 函数的基本语法如下:

pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

主要参数解释:
objs: 一个序列或映射,这里应该是包含多个 pandas 对象的列表。
axis: {0/’index’, 1/’columns’}, 默认为 0。定义合并的方向。
join: {‘inner’, ‘outer’}, 默认为 ‘outer’。定义如何处理不同对象的索引。
ignore_index: 布尔值,默认为 False。如果为 True,则不使用索引值,而是创建一个新的范围索引。
keys: 序列,默认为 None。如果传递了序列,则创建一个多级索引。
verify_integrity: 布尔值,默认为 False。检查新连接的轴是否包含重复项。
sort: 布尔值,默认为 False。在沿轴连接时排序。

3. 将 Series 纵向合并到 DataFrame

示例代码 1: 基本纵向合并

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 纵向合并
result = pd.concat([df, s.to_frame().T])
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 2: 忽略原有索引,创建新索引

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 纵向合并,忽略索引
result = pd.concat([df, s.to_frame().T], ignore_index=True)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 3: 使用 keys 创建多级索引

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 使用 keys 参数
result = pd.concat([df, s.to_frame().T], keys=['DataFrame', 'Series'])
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

4. 将 Series 横向合并到 DataFrame

示例代码 4: 基本横向合并

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'C': [1, 2, 3],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 横向合并
result = pd.concat([df, s.to_frame().T], axis=1)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 5: 横向合并并处理不匹配的索引

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'C': [1, 2, 3],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 横向合并,处理不匹配的索引
result = pd.concat([df, s.to_frame().T], axis=1, join='inner')
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 6: 使用 ignore_index 在横向合并时重置列索引

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'C': [1, 2, 3],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 横向合并,重置列索引
result = pd.concat([df, s.to_frame().T], axis=1, ignore_index=True)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

5. 使用 concat 的高级功能

示例代码 7: 验证数据完整性

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 验证数据完整性
result = pd.concat([df1, df2], verify_integrity=True)
print(result)

示例代码 8: 使用 sort 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'B': [1, 2, 3],
    'A': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'D': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 sort 参数
result = pd.concat([df1, df2], sort=True)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 9: 使用 keys 和 names 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 keys 和 names 参数
result = pd.concat([df1, df2], keys=['First', 'Second'], names=['Source', 'Row ID'])
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 10: 合并多个 Series 为 DataFrame

import pandas as pd

# 创建多个 Series
s1 = pd.Series([1, 2, 3], name='A')
s2 = pd.Series(['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'], name='B')

# 合并为 DataFrame
result = pd.concat([s1, s2], axis=1)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 11: 处理具有不同索引的 Series

import pandas as pd

# 创建具有不同索引的 Series
s1 = pd.Series([1, 2, 3], index=[1, 2, 3], name='A')
s2 = pd.Series(['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'], index=[4, 5, 6], name='B')

# 合并为 DataFrame,使用外连接
result = pd.concat([s1, s2], axis=1, join='outer')
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 12: 使用 ignore_index 在纵向合并时重置行索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 纵向合并,重置行索引
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 13: 合并时使用不同的 join 类型

import pandas as pd

# 创建两个 DataFrame,具有部分重叠的列
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'B': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用内连接
result = pd.concat([df1, df2], join='inner')
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 14: 使用多级索引进行更复杂的合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 keys 创建多级索引
result = pd.concat([df1, df2], keys=['Set1', 'Set2'])
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 15: 在横向合并时处理不同长度的 DataFrame

import pandas as pd

# 创建两个不同长度的 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2],
    'B': ['pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'C': [3, 4, 5],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 横向合并,使用外连接
result = pd.concat([df1, df2], axis=1, join='outer')
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 16: 合并具有相同列但不同顺序的 DataFrame

import pandas as pd

# 创建两个具有相同列但顺序不同的 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'B': [4, 5, 6],
    'A': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

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

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 17: 使用 concat 的 copy 参数

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
s = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 横向合并,不复制数据
result = pd.concat([df, s.to_frame().T], axis=1, copy=False)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 18: 在纵向合并时处理具有不同列的 DataFrame

import pandas as pd

# 创建两个具有不同列的 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'C': [4, 5, 6],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 纵向合并,使用外连接
result = pd.concat([df1, df2], axis=0, join='outer')
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 19: 在横向合并时使用 keys 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'C': [4, 5, 6],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 横向合并,使用 keys 参数
result = pd.concat([df1, df2], axis=1, keys=['First', 'Second'])
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

示例代码 20: 在纵向合并时使用 sort 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 纵向合并,使用 sort 参数
result = pd.concat([df1, df2], sort=False)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

这段代码展示了如何使用 sort 参数在合并时控制是否对列进行排序。在这个例子中,sort=False 表示合并后的 DataFrame 将保持输入 DataFrame 的列顺序。

示例代码 21: 使用验证参数检查合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用验证参数
try:
    result = pd.concat([df1, df2], verify_integrity=True)
    print(result)
except ValueError as e:
    print("ValueError:", e)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

这段代码使用 verify_integrity 参数来检查合并过程中是否会产生重复的索引。如果有重复,将抛出一个 ValueError

示例代码 22: 合并时使用不同的 axis 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'C': [4, 5, 6],
    'D': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 横向合并
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

这段代码展示了如何使用 axis=1 参数进行横向合并,将两个 DataFrame 的列并排放置。

示例代码 23: 使用 append 方法简化合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 append 方法进行合并
result = df1.append(df2)
print(result)

append 方法是 concat 函数的简化形式,专门用于纵向合并 DataFrame。

示例代码 24: 在合并时处理重复列名

import pandas as pd

# 创建两个 DataFrame,具有重复的列名
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 合并并处理重复列名
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

如何使用 Pandas 中的concat函数将 Series 对象合并到 DataFrame 中

这段代码通过 ignore_index=True 参数重置索引,从而避免在合并时出现重复的索引问题。

以上示例提供了多种使用 pandas 进行数据合并的方法和技巧,帮助你根据不同的数据处理需求选择合适的工具和参数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程