pd.concat
是 pandas 库中的一个函数,用于将多个 pandas 对象(如 Series、DataFrame)沿指定轴进行合并连接。
pd.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 表示沿着行方向合并,1 表示沿着列方向合并。join
(可选): 指定合并连接的方式,‘outer’ 表示并集,‘inner’ 表示交集。ignore_index
、keys
、verify_integrity
等参数用于控制合并连接的方式和结果。 假如我有两个dataframe类型,需要将其变为一个,我们如何实现呢?
import pandas as pd
# 合并连接两个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
print(df1)
print("-----------------------------")
print(df2)
result0 = pd.concat([df1, df2]) # 默认是axis=0 按照行进行拼接
print(result0)
我们发现这样还是存在有一些问题的,他的索引是乱序的,就是直接将两个dataframe类型拼接起来的,如下。
可以使用ignore_index
参数来忽略原始的索引,实现拼接的效果。
# # 忽略原始索引,重新生成索引 (相当于对使用reset_index)
result3 = pd.concat([df1, df2], ignore_index=True)
print(result3)
使用reset_index
对索引列进行重置。
# 重新索引排序 同时删除旧索引
result5= pd.concat([df1, df2],axis=0).reset_index(drop=True 不然会出现两个索引 ) # 必须要加上drop=True 不然会出现两个索引
print(result5)
效果如下:
# 沿着列方向合并连接两个 DataFrame
result1 = pd.concat([df1, df2], axis=1)
print(result1)
我们会发现,当axis=1的时候,是按照列进行拼接的,连接条件是有共同的索引。
# 创建两个具有不重叠列的 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
# 使用 join='inner' 进行合并连接
result_inner = pd.concat([df1, df2], join='inner', axis=1)
print("\nInner Join:")
print(result_inner)
当涉及到合并连接多个 DataFrame 对象时,concat
函数是一个非常有用的工具。以下是对 concat
函数的总结:
concat
函数主要用于以下场景:
concat
函数可以将多个 DataFrame 对象连接在一起,形成一个新的 DataFrame。这对于合并来自不同源的数据或者将数据拆分为更小的块进行处理非常有用。axis=0
,concat
函数可以将具有相同列的多个 DataFrame 对象按行方向(纵向)拼接起来。这样可以将数据堆叠在一起,增加行数。axis=1
,concat
函数可以将具有相同行索引的多个 DataFrame 对象按列方向(横向)拼接起来。这对于将数据水平扩展或将不同特征的数据合并到一起非常有用。concat
函数可以根据指定的轴(axis
)将数据进行拼接。默认情况下,它在轴 0 上进行拼接,即按行拼接。但您也可以通过设置 axis=1
在轴 1 上进行拼接,即按列拼接。 总之,concat
函数提供了一种简单而灵活的方式来合并连接多个 DataFrame 对象。无论是纵向还是横向拼接数据,concat
函数都能满足您的需求。它在数据处理和数据分析过程中非常有用。
如果您有任何其他问题,欢迎继续提问。