gpt4 book ai didi

python - 对多个 Excel 电子表格重复 df.reindex

转载 作者:行者123 更新时间:2023-12-01 06:26:47 25 4
gpt4 key购买 nike

任何人都可以帮助我如何对 Excel 文档的多个工作表重新建立索引吗?列顺序需要切换,下面的内容适用于单张纸,但不适用于多张纸......

打开电子表格时,如下所示:df = pd.read_excel(excel_file,sheet_name=''工作表名称')

并将新的列顺序定义为:

cols = (['N', 'Ø'])

然后重新索引到该订单

df = df.reindex(columns=cols)

它有效,但是当我选择sheet_name=None来读取所有工作表时,我收到错误:

“AttributeError:'dict'对象没有属性'reindex'”

我是 Python 新手,所以无法理解为什么我无法在所有 df 上运行重新索引。

提前致谢

最佳答案

sheet_name=None 时,返回的是 {SheetName: pd.DataFrame} 的 OrderedDict。在这里,我创建了一个简单的两页 .xlsx 文件,每页上一行,并具有不同的列标签。

d = pd.read_excel('test.xlsx', sheet_name=None)

for sheet_name, df in d.items():
print(sheet_name)
print(f'{df}\n')

#Sheet1
# foo bar
#0 11 12
#
#Sheet2
# baz boo
#0 1 2

所以如果你想修改它们,你可以遍历字典

# Add 20, but you could reindex for instance. 
for sheet_name, df in d.items():
d[sheet_name] = df.add(20)

print(d)
#OrderedDict([('Sheet1',
# foo bar
# 0 31 32),
# ('Sheet2',
# baz boo
# 0 21 22)])
<小时/>

如果工作表都包含相似的信息,那么您可以concat 到单个 DataFrame 中。由于没有重叠的列,因此没有多大意义。工作表名称作为 MultiIndex 键添加,因此您始终可以将它们分开。

df = pd.concat(d, sort=False)
print(df)
# foo bar baz boo
#Sheet1 0 31.0 32.0 NaN NaN
#Sheet2 0 NaN NaN 21.0 22.0

关于python - 对多个 Excel 电子表格重复 df.reindex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101041/

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