【问题标题】:Import several csv files as seperate variables using def function使用 def 函数将多个 csv 文件作为单独的变量导入
【发布时间】:2021-07-09 00:24:59
【问题描述】:

我正在尝试导入多个位于同一文件夹中的 csv 文件,并根据我调用 def 函数的方式将它们存储为单独的变量。在这种情况下,股票代码。

以前我有这个:

#MSCI World
urth = pd.read_csv (r'.\CSV Files\urth.csv') 
urth.set_index('Date', inplace=True)

#MSCI Emerging Markets
eem = pd.read_csv (r'.\CSV Files\eem.csv')
eem.set_index('Date', inplace=True)

#International Corporate Bond
picb = pd.read_csv (r'.\CSV Files\picb.csv')
picb.set_index('Date', inplace=True)

#and so on.

我正在尝试使代码更枯燥。到目前为止我的方法:

import pandas as pd

def readfile(ticker):
    data_folder="(r'./CSV Files/"
    file=data_folder + "{}.csv')".format(ticker)
    #return file yields: "(r'./CSV Files/urth.csv')"
    df=pd.read_csv {}.format(file)
    return df
    
readfile('urth')

我得到以下回溯:

  File "<ipython-input-111-c85ffca58d7f>", line 6
    df=pd.read_csv {}.format(file)
                   ^
SyntaxError: invalid syntax

似乎我需要找到一种方法来摆脱文件变量中的“”,以便按照我上面显示的手动步骤执行代码。

有人有想法吗?非常感谢!

【问题讨论】:

  • 不应该是df=pd.read_csv(file)

标签: pandas csv import merge filepath


【解决方案1】:

函数应该如下所示:

import pandas as pd

def readfile(ticker):
    data_folder="./CSV Files/"
    file=data_folder + "{}.csv".format(ticker)
    #return file yields: "(r'./CSV Files/urth.csv')"
    df=pd.read_csv(file)
    return df
    
readfile('urth')

pd.read_csv 的语法不正确,缺少()

【讨论】:

  • 嗨,布鲁诺,非常感谢您的帮助和抽出宝贵时间!不幸的是,我仍然遇到回溯: AttributeError: 'dict' object has no attribute 'format'
  • 嗨,布鲁诺,感谢您迄今为止的帮助。我看到你这次重新定位了括号。不幸的是,它仍然返回一个回溯: FileNotFoundError: [Errno 2] No such file or directory: "r'./CSV Files/urth.csv" 即使我在同一目录中的文件夹 'CSV Files' 中有那个 csv .我知道这一点是因为我之前使用的手动较长版本有效。我找到了直接从网络直接导入数据的问题的解决方法。所以不要感到有压力来提供进一步的帮助!附言抱歉,由于积分有限,我无法为您的答案投票...
  • @meinerst 我认为问题在于 data_folder 字符串中有一个r。也许现在就试试……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2012-04-17
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多