使用 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 中,变量名分别为 df1
、df2
、df3
。
我们想把这几个 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 的完整攻略。