如何修改熊猫有序词典的键?

问题描述 投票:0回答:1

我正在读取一个大约有2000张熊猫的Excel文件。自从我使用以下命令以来,Excel工作表就作为有序词典加载:

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

让我们假设它看起来像这样:Ordered dictionary from excel file

我想修改工作表的名称,然后将有序词典再次保存到excel文件中。工作表的名称存储为“有序词典”的键,因此基本上我只想修改键并再次保存为excel。

[可以注意到,密钥的名称以一年结尾,即2020、2022等。我希望对所有密钥进行修改,以使其减少1,所以密钥的名称现在为2019, 2021等。我还想确保内容没有改变;意味着以前分配给A.AA.XX2020的数据帧现在已分配给A.AA.XX2019。 “常规”表不必修改。

由于excel文件中有很多工作表,因此,我希望使用自动化程序。

python excel pandas key ordereddictionary
1个回答
0
投票

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

import pandas as pd

# read excel workbook
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 dicts in one Excel workbook with new worksheet names    
with pd.ExcelWriter('test_new.xlsx') as writer:
    for sheet_name, df in test.items():
        df.to_excel(writer, sheet_name=sheet_name)
© www.soinside.com 2019 - 2024. All rights reserved.