如何修改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)
我正在阅读一个 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)