python - 有没有办法在循环中通过更改名称来编辑变量?
问题描述
我需要从数据库中编辑 200 多个 Excel 文件,不幸的是,数据库以一种奇怪的方式提供数据,这意味着我需要删除前 2 行,并且需要重命名 20 个变量名。其中 19 个保持不变,但 excel 表中的 1 个变量名称(始终位于同一位置)正在发生变化。这个变化的变量需要命名为 FY-0,名称更改为 FY-1... 已经包含在内。
import os
import pandas as pd
in_path = 'ESG_untransfored'
out_path = 'ESG_transformed'
if not os.path.exists(out_path):
os.mkdir(out_path)
for filename in os.listdir(in_path):
if filename.endswith('.xlsx'):
df = pd.read_excel(os.path.join(in_path, filename))
df = df.iloc[2:]
duf=duf.rename(columns = {'Unnamed: 29':'FY-1'})
duf=duf.rename(columns = {'Unnamed: 30':'FY-2'})
duf=duf.rename(columns = {'Unnamed: 31':'FY-3'})
duf=duf.rename(columns = {'Unnamed: 32':'FY-4'})
duf=duf.rename(columns = {'Unnamed: 33':'FY-5'})
duf=duf.rename(columns = {'Unnamed: 34':'FY-6'})
duf=duf.rename(columns = {'Unnamed: 35':'FY-7'})
duf=duf.rename(columns = {'Unnamed: 36':'FY-8'})
duf=duf.rename(columns = {'Unnamed: 37':'FY-9'})
duf=duf.rename(columns = {'Unnamed: 38':'FY-10'})
duf=duf.rename(columns = {'Unnamed: 39':'FY-11'})
duf=duf.rename(columns = {'Unnamed: 40':'FY-12'})
duf=duf.rename(columns = {'Unnamed: 41':'FY-13'})
duf=duf.rename(columns = {'Unnamed: 42':'FY-14'})
duf=duf.rename(columns = {'Unnamed: 43':'FY-15'})
duf=duf.rename(columns = {'Unnamed: 44':'FY-16'})
duf=duf.rename(columns = {'Unnamed: 45':'FY-17'})
duf=duf.rename(columns = {'Unnamed: 46':'FY-18'})
duf=duf.rename(columns = {'Unnamed: 47':'FY-19'})
duf=duf.rename(columns = {'Unnamed: 48':'FY-20'})
df.to_excel(os.path.join(out_path, filename), index=False)
解决方案
假设我正确理解了您的问题(duf
应该是这样df
),您可以执行以下操作:
df = pd.read_excel(os.path.join(in_path, filename))
df = df.iloc[2:]
cols = list(df.columns)
cols[0] = "FY-0"
df.columns = cols
这将始终将第一列的名称更改为"FY-0"
. 不太优雅,但应该做的伎俩。
(您必须这样做的原因list(df.columns)
是数据框的列属性是不可变的,但列表不是)。
推荐阅读
- java - 布局未在 Android Studio 中呈现
- apache-spark - 如何在 hive udf 或 taskcontext 中使用累加器
- angular - Ionic Angular 编译器变量名
- javascript - 通过 HTML 调用导入的函数
- r - rtweet 库不工作,我目前正在尝试使用 rtweet 库的 search_tweets() 来抓取推文,但它给出了一个错误
- c# - 比较具有可能已更改的相同对象的 2 个列表
- php - AES 加密 PHP 5.6 到 PHP 7.3
- android - Facebook 弃用 Android WebViews 上的登录支持?
- amazon-web-services - s3 的生命周期规则调用 lambda 函数
- firebase - 有没有办法在 Firebase Analytics for Flutter 中跟踪自定义事件的参与时间?