【问题标题】:Python Functions: Pass parameter as string and reference?Python 函数:将参数作为字符串和引用传递?
【发布时间】:2023-02-04 02:28:02
【问题描述】:

我脑子里有个结。我什至不确定要用谷歌搜索什么。 (或者如何制定我的标题)

我想执行以下操作:我想编写一个函数,该函数采用以 .csv 名称出现的术语,但同时我希望 df 以它命名。

像这样:

def read_data_into_df(name):
     df_{name} = pd.read_csv(f"file_{name}.csv")

当然 df_{name} 部分不起作用。但我希望你能明白。

如果没有硬编码,这可能吗?

谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    IIUC,你可以使用globals

    def read_data_into_df(name):
         globals()[f"df_{name}"] = pd.read_csv(f"file_{name}.csv")
         
    

    【讨论】:

    • 太感谢了!工作完美:)
    【解决方案2】:

    如果我是你,我会创建一个字典并创建键

    dictionary = f"df_{name}: {whatever_you_want}"
    

    【讨论】:

      【解决方案3】:

      如果只有几个数据帧,只需接受最少的代码重复:

      def read_data_into_df(name):
           return pd.read_csv(f"file_{name}.csv")
      
      ...
      
      df_ham = read_data_into_df('ham')
      df_spam = read_data_into_df('spam')
      df_bacon = read_data_into_df('bacon')
      
      ...
      
      # Use df_ham, df_spam and df_bacon
      

      如果它们很多,或者生成了确切的数据帧,我会使用字典来跟踪数据帧:

      dataframes = {}
      
      def read_data_into_df(name):
           return pd.read_csv(f"file_{name}.csv")
      
      ...
      
      for name in ['ham', 'spam', 'bacon']:
          dataframes[name] = read_data_into_df('name')
      ...
      
      # Use dataframes['ham'], dataframes['spam'] and dataframes['bacon']
      # Or iterate over dataframes.values() or dataframes.items()!
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多