【问题标题】:Function: make argument executable功能:使参数可执行
【发布时间】:2021-06-30 14:14:05
【问题描述】:

所以我有以下代码。它应该导出一个 excel 文件,但命名不起作用。虽然内容还可以。 该文件名为 "Empty DataFrame 列:[Column1,Column2] 索引:[].xlsx"

它应该被命名为 testDF.xlsx。有没有简单的解决办法?

import pandas as pd

ExportExcelParam = 1;

testDF = pd.DataFrame(columns=['Column1','Column2'], dtype=object)


def ExcelExportDF(Dataframe, ExportExcelParam):
    if ExportExcelParam == 1: 
        Filename = str(Dataframe) + ".xlsx"
        Dataframe.to_excel(Filename)


ExcelExportDF(testDF, ExportExcelParam)

【问题讨论】:

  • Filename = "testDF.xlsx"?你觉得str(Dataframe) 会得到什么回报?
  • @Mark 你不能只使用str(Dataframe) 来获取Dataframe 的名称。您可能需要遍历 globals 才能获得名称
  • 在这种情况下你没有错。但我希望函数在给定的 Dataframe 名称之后命名 excelfile。所以不是静态的,而是基于参数 Dataframe。
  • 一个对象完全没有办法知道你给它分配了什么名字。那么数据框的哪一部分有你想要的名字呢?
  • 谢谢,这完全有道理!

标签: python function arguments


【解决方案1】:

那是因为testDF 不是字符串,它只是变量的名称。现在该变量包含一个DataFrame,所以当您使用str() 时,它会尝试提供一个代表DataFrame 本身的合理字符串。

一个简单的解决方案是在附加参数中将名称作为字符串传递。是的,它需要输入两次名称,但这可能是最安全和最直接的选择,除非您可以从其他地方检索名称。

def ExcelExportDF(Dataframe, Filename, ExportExcelParam):
    if ExportExcelParam == 1: 
        Dataframe.to_excel(Filename + ".xlsx")


ExcelExportDF(testDF, 'testDF', ExportExcelParam)

编辑:刚刚看到了 cmets。如果您知道自己在做什么,也许this 可以工作。

【讨论】:

  • 谢谢,这解决了问题。传递对象字符串。否则遍历全局变量应该可以工作!
猜你喜欢
  • 2012-08-24
  • 2018-06-20
  • 2011-12-26
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多