python - 如何从熊猫数据框列表中获取原始变量名
问题描述
我有一个熊猫数据框列表,想要对其进行迭代并获取原始变量名称。我尝试了以下方法,但打印行抛出错误('DataFrame' 对象没有属性'name'):
import pandas as pd
testFrame1 = pd.DataFrame(columns=["test1"])
testFrame2 = pd.DataFrame(columns=["test2"])
listOfFrames = [testFrame1,testFrame2]
for frame in listOfFrames:
print(frame.name) #<--This throws an error
在这种情况下,我希望输出为: testFrame1 testFrame2
背景:我有一个函数,它接收数据框并将它们中的每一个附加到带有新工作表的 Excel 文件中。它可以工作,但每个新工作表都被命名为“Analysis_0”、“Analysis_1”等。我希望每个新工作表都以数据框变量命名(在本例中为“testFrame1”、“testFrame2”等)。这是到目前为止的功能:
def addDFWorksheetToExcelFile(excelFile,*dataFrames):
# copied from stackoverflow
from openpyxl import load_workbook
book = load_workbook(excelFile)
with pd.ExcelWriter(excelFile, engine='openpyxl') as writer:
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
## Your dataframes to append.
frameNo = 0
for dataFrame in dataFrames:
# This is where I would like to name the Excel sheet after the original data frame variable name
dataFrame.to_excel(writer, "Analysis_" + str(frameNo))
frameNo += 1
writer.save()
# end copy stackoverflow
解决方案
您实际上可以为数据框设置名称方法。
testFrame1 = pd.DataFrame(columns=["test1"])
testFrame1.name = 'testFrame1'
testFrame2 = pd.DataFrame(columns=["test2"])
testFrame2.name = 'testFrame2'
listOfFrames = [testFrame1,testFrame2]
for frame in listOfFrames:
print(frame.name)
这将打印数据框名称
推荐阅读
- r - R函数按名称子集行名
- firebase - Google oauth 2.0 登录 vs firebase auth 登录。有什么区别?
- amazon-web-services - 尝试运行 CodeBuild 以在 CodeCommit 中创建批准规则,但其返回错误 [此上下文中不允许映射值]
- kubernetes - 为什么 Helm 使用“--dependency-update”推送无法按名称找到存储库,但“helm 依赖更新”却可以?
- matlab - matlab imagesc,在不更改颜色图的情况下设置 NaN 颜色 - 正确的方法?
- python - 是否可以同时以全高清分辨率录制 2 个摄像机流?(Python)
- jquery - 浏览器将德语字母显示为 ? 在 asp.net mvc 应用程序中
- reactjs - 如何知道谷歌帐户是否在前端网站中被删除/暂停
- spring-boot - Spring Boot + Vaadin 14 + bootJar + Gradle 示例
- javascript - 功能组件:无法从 handleSubmit 函数访问变量