如何修改Pandas处有序字典的Key?

How to modify the Key of an Ordered Dictionary at Pandas?

我正在阅读一个 excel 文件,其中包含大约 2000 sheet 秒 pandas。 excel sheet 作为有序字典加载,因为我使用了以下内容:

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

让我们假设它看起来像这样:

我想修改 sheet 的名称并再次将 Ordered Dictionary 保存到 excel 文件。 sheet 的名称存储为有序字典的键,所以基本上我只想修改键并再次保存到 excel。

因为可以注意到密钥的名称以年份结尾,即 2020、2022 等。我希望修改所有密钥,使它们减 1,因此密钥的名称是现在 2019 年、2021 年等。我还想确保内容不会改变;这意味着过去分配给 A.AA.XX2020 的数据帧现在分配给 A.AA.XX2019。 "General" sheet不需要修改。

由于 excel 文件中有很多 sheet,我更喜欢自动化过程。

希望以下内容能满足您的需求:

import pandas as pd

# read Excel file
test = pd.read_excel('test.xlsx', sheet_name=None)

# get keys from dict without 'General'
keys = list(test.keys())
keys.remove('General')

# iterate over keys
for key in keys:

    # get the old year
    year_old = int(key[-4:])

    # make the new year
    year_new = year_old - 1

    # create name for new key
    key_new = key[:-4] + str(year_new)

    # copy values from old key in new key and delete old key
    test[key_new] = test.pop(key)

# write dataframes from dict in one Excel file with new sheet names    
with pd.ExcelWriter('test_new.xlsx') as writer:
    for sheet_name, df in test.items():
        df.to_excel(writer, sheet_name=sheet_name)