代码之家  ›  专栏  ›  技术社区  ›  geoJshaun

如何使用字符串为数据帧设置变量名?[副本]

  •  0
  • geoJshaun  · 技术社区  · 8 年前

    我正在尝试使用for循环将一组CSV读入熊猫。我希望表名是扩展名之前完整文件路径的最后一位。例如

    ACS_BV0002_2016_Age.csv 
    

    可能是

    Age 
    

    我这样做是为了创建字典,表名作为键,列名和数据类型作为值,然后我可以在psycogpg2中使用它在postgresql中一次性创建所有表。

    这似乎得到了我想要的名字:

    path = r"C:\Data\Waste_Intervention\Census_Tables\Cleaned"
    fList = os.listdir(path)
    
    for doc in fList:
        csv = "{}\\{}".format(path, doc)
        name = doc.split("_")[-1][:-4]
    
        pd.read_csv(csv)
    

    有什么方法可以使用 name 成为读取数据帧的变量名 pd.read_csv ?

    1 回复  |  直到 4 年前
        1
  •  1
  •   cs95 abhishek58g    8 年前

    从您的代码中,不清楚为什么要指定 read_csv 要分配到的项目 到 数据帧。不管怎样,你问:

    有没有办法把我想要的绳子传给桌子 pd的名称。csv\u读取,以便我可以将路径中的所有csv 熊猫有一个for循环,让它们保留一个简单易懂的 名称

    在这种情况下,您可以做的事情有限。 DataFrame 对象实际上与“名称”没有关联,比如说,您可以使用描述性变量名称来处理它。

    然而,对于您希望创建数量可变的变量的情况,最简单的方法(我会这么做)是使用字典。

    dfs = {}
    
    for doc in fList:
        i = "{}\\{}".format(path, x[0])
        j = doc.split("_")[-1][:-4]
    
        dfs[j] = pd.read_csv(i)
    

    您现在可以参考从 ACS_16_5YR_B02001_race.csv 使用 dfs['race'] !