pandas纵向拼接多DataFrame并忽略索引的方法

何川
何川
发布时间:2026-10-14| 6人浏览过
原创

本文介绍如何使用pandas的concat函数在纵向拼接多个DataFrame时忽略原有索引。通过设置ignore_index=True参数,可生成连续的新索引,避免NaN值。同时涵盖横向拼接的axis=1用法,帮助处理不同列名的数据合并问题。

从Wind获取股票数据时,常遇到因季度差异导致列名不一致的问题,进而使pandas合并报表时产生大量NaN值。为此,编写了一个专用函数来解决此类表结构的合并难题。

其核心思路如下:

首先生成一组随机单词作为临时列名,将这些表的列索引全部替换为这些单词,然后调用 将这些DataFrame合并,最后再将列索引恢复为原始名称。当然,用户也可以手动指定列索引。

具体使用方法见代码最后一行,只需传入一个包含DataFrame的列表即可。


import pandas as pd
from random import Random 
 
# 随机生成一堆单词作为公共的列名
def random_list(random_str_count, randomlengtd=6):
 result_list = []
 random = Random()
 chars = "qwertyuiopasdfghjklzxcvbnm"
 for str_count in range(random_str_count):
 ranstr = ""
 lengtd = len(chars) - 1
 for str_lengtd in range(randomlengtd):
 ranstr += chars[random.randint(0, lengtd)]
 result_list.append(ranstr)
 return result_list 
 
def combine_as_data_location(pd_list, columns=''):
 if not pd_list:
 return None
 old_columns = pd_list[0].columns
 if columns:
 new_columns = columns
 else:
 new_columns = random_list(pd_list[0].shape[1])
 for data_df in pd_list:
 # data is pandas Dataframe
 data_df.columns = new_columns
 result_df = pd.concat(pd_list, ignore_index=True)
 if columns:
 return result_df
 else:
 result_df.columns = old_columns
 return result_df 
result_df = combine_as_data_location([df1,df2,df3])

补充说明:pandas.concat实现竖着拼接、横着拼接DataFrame

1、concat竖着拼接(默认方向为竖直,axis=0)

直接通过示例演示:


import pandas as pd
df1=pd.DataFrame([10,12,13])
df2=pd.DataFrame([22,33,44,55])
df3=pd.DataFrame([90,94])

df1

0
0 10
1 12
2 13

df2

0
0 22
1 33
2 44
3 55

df3

0
0 90
1 94

res= pd.concat([df1,df2,df3])
res
0
0 10
1 12
2 13
0 22
1 33
2 44
3 55
0 90
1 94

若需生成新索引并忽略原有索引,应如何处理?

默认情况下,ignore_index参数为False,将其值改为True即可:


res2= pd.concat([df1,df2,df3], ignore_index=True)
res2
0
0 10
1 12
2 13
3 22
4 33
5 44
6 55
7 90
8 94

2、concat横着拼接

使用参数axis=1,参考以下示例:


res_heng= pd.concat([df1,df2,df3], axis=1)
res_heng
0 0 0
0 10.0 22 90.0
1 12.0 33 94.0
2 13.0 44 NaN
3 NaN 55 NaN

以上为个人经验分享,希望能为大家提供参考。如有错误或未考虑周全之处,欢迎指正。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。