【问题标题】:Is it possible to create a column called ticker with the name of each stock when reading in multiple csv files?在读取多个 csv 文件时,是否可以使用每只股票的名称创建一个名为ticker 的列?
【发布时间】:2019-03-09 09:54:11
【问题描述】:

我对 Python 相当陌生,并且在读取多个 csv 文件时需要一些帮助来生成一个名为 Ticker 的新列。作为雅虎! Finance API 已折旧,我正在从 Yahoo! 读取 csv 数据! “GOOG”、“IBM”和“AAPL”的财务。以下代码将单个 csv 文件读入一个 DateFrame,但是,很难区分哪个股票是哪个股票。

path = 
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file in allFiles:
     df = pd.read_csv(file,index_col=None, 
          header=0)
     list_.append(df)
frame = pd.concat(list_)
frame.head()

是否可以创建一个名为 Ticker 的列,其中包含每个股票的每个观察值的 csv 文件的名称?例如。 GOOG.csv 是 Google 的文件名,IBM.csv 是 IBM 的文件名...

这将更容易识别哪个股票是哪个。

【问题讨论】:

    标签: python csv finance yahoo stocks


    【解决方案1】:

    根据this之前的帖子,我被引导相信你有两个明确的选择。 (1) 在原始 read_csv 命令中包含 names=[] 以指定股票名称,或者 (2) 在加载前将列名添加到数据框中。

    方法 (1) 可能涉及用以下代码 sn-p 替换您当前的读取:

    df=pd.read_csv(file,names=[file[len(path)+1:-4]],index_col=None)
    

    在这里,我假设我可以通过查看路径后面的一个斜杠之后的所有字符,直到 .csv 来获得所需代码的字符串。

    方法 (2) 可以通过在读取 csv 之后添加数据帧之前添加以下代码行来实现:

    df.columns=[file[len(path)+1:-4]]
    

    我在此回复中假设您只有/想要每个 csv 的一列数据,但如果您想在其中放入多列,您只需在列名列表中指定多个名称。

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2019-11-15
      • 2020-05-26
      • 1970-01-01
      • 2014-03-29
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      相关资源
      最近更新 更多