使用pandas忽略行列索引,纵向拼接多个dataframe

  • Post category:Python

使用 Pandas 忽略行列索引,纵向拼接多个 DataFrame 的完整攻略如下:

前置条件

在使用 Pandas 忽略行列索引,纵向拼接多个 DataFrame 之前,需要确保这些 DataFrame 具有相同的列名和相同的列顺序。当然,行数可以不相同。

代码实现

在 Pandas 中,我们可以使用 pd.concat() 函数将多个 DataFrame 纵向拼接起来。如果要忽略行索引,需要将 axis 参数设置为 0。代码示例如下:

import pandas as pd

# 创建三个 DataFrame
datas1 = {'A': [1, 2], 'B': ['x', 'y']}
df1 = pd.DataFrame(datas1)

datas2 = {'A': [3, 4], 'B': ['z', 'w']}
df2 = pd.DataFrame(datas2)

datas3 = {'A': [5, 6], 'B': ['m', 'n']}
df3 = pd.DataFrame(datas3)

# 使用 concat 函数将三个 DataFrame 纵向拼接起来,并忽略行索引
result = pd.concat([df1, df2, df3], axis=0, ignore_index=True)

# 输出结果
print(result)

输出结果如下,其中注意行索引已经被忽略掉了。

   A  B
0  1  x
1  2  y
2  3  z
3  4  w
4  5  m
5  6  n

示例说明

下面我们来看两个实际的应用示例。

示例一:纵向拼接多个 Excel 文件

假设我们有多个 Excel 文件,文件名分别为 ‘file1.xlsx’、’file2.xlsx’、’file3.xlsx’。

我们想把这些文件全部读取出来,并将它们纵向拼接成一个大的 DataFrame,最后保存到 ‘result.xlsx’ 文件中。

下面是代码实现:

import pandas as pd
import glob

# 读取多个 Excel 文件
xlsx_file_list = glob.glob('*.xlsx')

# 存储所有 DataFrame 的列表
df_list = []

for xlsx_file in xlsx_file_list:
    # 读取当前 Excel 文件
    df = pd.read_excel(xlsx_file)
    # 添加到 DataFrame 列表中
    df_list.append(df)

# 使用 concat 函数将多个 DataFrame 纵向拼接起来,并忽略行索引
result = pd.concat(df_list, axis=0, ignore_index=True)

# 将结果保存到 result.xlsx 文件中
result.to_excel('result.xlsx', index=False)

示例二:拼接多个爬取的表格

假设我们已经爬取了多个网页的表格数据,并将它们存储在 DataFrame 中,变量名分别为 df1df2df3

我们想把这几个 DataFrame 纵向拼接起来,得到一个大的 DataFrame。

下面是代码实现:

import pandas as pd

# 创建三个 DataFrame,这里用 dummy 数据代替
datas1 = {'A': [1, 2], 'B': ['x', 'y']}
df1 = pd.DataFrame(datas1)

datas2 = {'A': [3, 4], 'B': ['z', 'w']}
df2 = pd.DataFrame(datas2)

datas3 = {'A': [5, 6], 'B': ['m', 'n']}
df3 = pd.DataFrame(datas3)

# 拼接三个 DataFrame,并忽略行索引
result = pd.concat([df1, df2, df3], axis=0, ignore_index=True)

# 输出结果
print(result)

输出结果如下:

   A  B
0  1  x
1  2  y
2  3  z
3  4  w
4  5  m
5  6  n

至此,我们就完成了使用 Pandas 忽略行列索引,纵向拼接多个 DataFrame 的完整攻略。