首页 > 解决方案 > 如何从熊猫数据框列表中获取原始变量名

问题描述

我有一个熊猫数据框列表,想要对其进行迭代并获取原始变量名称。我尝试了以下方法,但打印行抛出错误('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

标签: pythonpandas

解决方案


您实际上可以为数据框设置名称方法。

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) 

这将打印数据框名称


推荐阅读