【问题标题】:using a list of names to open multiple files in python使用名称列表在 python 中打开多个文件
【发布时间】:2020-05-21 14:16:42
【问题描述】:

我想使用名称列表打开多个文件,这样打开的文件的名称也将包含列表中的名称,如下所示:

List = ["Sin", "Cos", "Tan"]
for x in List:
    df_x = pd.read_csv("C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\x.txt")

所以我希望x 替换文件名和目录中的x,这样最终我会从Sin.txt 打开df_Sin,从df_Cos 打开df_Cos,等等。

谢谢。

【问题讨论】:

    标签: python pandas list for-loop


    【解决方案1】:
    import pandas as pd
    List = ["Sin", "Cos", "Tan"]
    base="C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\"
    df = {}
    for x in List:
        df[x] = pd.read_csv(base + x +".txt")
    

    在上面的字典df中,使用df['Sin']来访问Sin变量,例如,如下:

    print df['Sin']
    

    【讨论】:

    • 我喜欢这个,因为我需要 for 循环对每个数据帧进行操作。但是,每个 df 的名称不会被修改以包含列表中的名称。例如,当我询问 df_Sin 时,我收到一条错误消息,名称为“'df_Sin' is not defined”
    • 当然,我已经修改了答案以使用字典,该字典将每个结果存储在“Sin”、“Cos”和“Tan”分配中。
    【解决方案2】:

    map

    f = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\{}.txt".format
    list(map(pd.read_csv, map(f, ["Sin", "Cos", 'Tan'])))
    

    【讨论】:

      【解决方案3】:

      您可能会发现将其存储在字典数据结构中会很有用。

      path = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants"
      file_names = ["Sin", "Cos", "Tan"]
      
      df_dict = {f"df_{x}": pd.read_csv(f"{path}//{x}.txt") for x in file_names}
      

      然后您可以使用

      访问感兴趣的数据框
      df_dict['df_Sin']
      

      【讨论】:

      • 我认为这是正确的方法。 2 条使其更简洁的建议:使用新的字符串插值:f"df_{x}" 而不是format(与文件路径相同)并将目录路径另存为 dict 外部的变量以使其更简洁
      • 所以path = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants" 在外面然后我们有df_dict = {f"df_{x}: pd.read_csv(f"{path}//{x}.txt" for x in file_names}
      • 啊,看起来不错。我以前没有真正使用过字符串插值,谢谢指出!如果您愿意,欢迎您进行编辑?
      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 2020-08-28
      • 1970-01-01
      • 2021-06-07
      • 2021-02-27
      相关资源
      最近更新 更多