【问题标题】:Reading CSV files into separate data frames using FOR Loop使用 FOR 循环将 CSV 文件读入单独的数据帧
【发布时间】:2021-09-03 04:36:00
【问题描述】:

我有 600 个csv 文件要读取以使用pd.read.csv 分隔数据帧。下面的代码我试过了。

for stock in stock_list:
    df_stock = pd.read_csv("D:/Stocks/CSV/" + stock + ".csv")

我希望将每个数据帧分别存储为 df_the 股票列表中的相应股票名称(例如df_pfizerdf_ICBC 等),但我的代码将其读入单个数据帧。股票名称在列表中stock_list

【问题讨论】:

    标签: python csv for-loop


    【解决方案1】:

    有 600 个变量是不可处理的,你应该使用字典。

    df_dict = {}
    for stock in stock_list:
        df_dict[stock] = pd.read_csv("D:/Stocks/CSV/" + stock + ".csv")
    

    ... 或:

    df_dict = {stock: pd.read_csv("D:/Stocks/CSV/" + stock + ".csv") for stock in stock_list}
    

    【讨论】:

    • 字典 comp 中的stock_list 是什么?
    • @Umar.H 这不是你的股票名单吗?然后,您可以从字典中检索具有名称的任何数据框,如下所示:df_dict["some_name"]。请查看python dictionaries 文档。
    【解决方案2】:

    您可以将数据框添加到 python dict:

    df_stocks = {}
    for stock in stock_list:
        df_stock = pd.read_csv("D:/Stocks/CSV/" + stock + ".csv")
        df_stocks[stock] = df_stock
    

    并访问任何数据框:

    df_stocks['df_pfizer']
    

    将返回 'df_pfizer' 数据帧,

    df_stocks['df_ICBC']
    

    将返回 df_stocks['df_ICBC'] 数据框,依此类推。

    【讨论】:

      【解决方案3】:

      您需要先创建一个数据框,然后根据股票名称使用字典组合将它们分开。

      from pathlib import Path
      import pandas as pd
      
      dfs = pd.concat(
                      [pd.read_csv(f) for f in Path(r"D:/Stocks/CSV/").glob('*.csv')]
                    )
      
      stock_dfs = {stock : frame for stock,frame in dfs.groupby('stock_list')}
      

      然后你可以通过它的键调用每个 df

      stock_dfs['df_pfizer']
      

      【讨论】:

      • 感谢 Umar 的及时回复。但我想要单独的数据框。有没有办法创建具有各自名称的单独数据框?
      • 不推荐创建 n 个变量。使用像dictionary 这样的容器我不确定你是想用stock_list 列还是文件名来分隔。也就是说,上述方法将为您处理。
      猜你喜欢
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2018-07-20
      • 2017-06-03
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多