gpt4 book ai didi

python - 合并文件擅长使用 Pandas 覆盖 Python 中的第一列

转载 作者:行者123 更新时间:2023-12-04 20:56:33 24 4
gpt4 key购买 nike

我有很多文件 excel,我想使用以下代码附加多个 excel 文件:

import pandas as pd
import glob
import os
import openpyxl

df = []
for f in glob.glob("*.xlsx"):

data = pd.read_excel(f, 'Sheet1')
data.index = [os.path.basename(f)] * len(data)
df.append(data)

df = pd.concat(df)
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()

Excel 文件具有以下结构:

enter image description here

输出如下:

enter image description here

为什么python在连接excel文件时会改变第一列?

最佳答案

我认为你需要:

df = []
for f in glob.glob("*.xlsx"):
data = pd.read_excel(f, 'Sheet1')
name = os.path.basename(f)
#create Multiindex for not overwrite original index
data.index = pd.MultiIndex.from_product([[name], data.index], names=('files','orig'))
df.append(data)

#reset index for columns from MultiIndex
df = pd.concat(df).reset_index()

另一种解决方案是使用参数 keys concat :
files = glob.glob("*.xlsx")
names = [os.path.basename(f) for f in files]
dfs = [pd.read_excel(f, 'Sheet1') for f in files]

df = pd.concat(dfs, keys=names).rename_axis(('files','orig')).reset_index()

与以下内容相同:
df = []
names = []
for f in glob.glob(".xlsx"):
df.append(pd.read_excel(f, 'Sheet1'))
names.append(os.path.basename(f))

df = pd.concat(df, keys=names).rename_axis(('files','orig')).reset_index()

最后一次写入没有索引和列名的 excel:
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1', index=False, header=False)
writer.save()

关于python - 合并文件擅长使用 Pandas 覆盖 Python 中的第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com