我正在尝试使用 for 循环将一堆 csv 读入熊猫。我希望表名是扩展名之前完整文件路径的最后一位。例如
ACS_BV0002_2016_Age.csv
将
Age
我这样做是为了我可以创建将表名作为键,将列名和数据类型作为值的字典,然后我可以在 psycogpg2 中使用它在 postgresql 中一举创建我的所有表。
这似乎得到了我想要的名字:
path = r"C:DataWaste_InterventionCensus_TablesCleaned"
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
读入的数据帧的变量名称?
从您的代码中,不清楚为什么要将read_csv
的结果分配给您尝试分配给数据帧的项。无论如何,你问:
有没有办法将我想要的字符串传递到表中 pd.csv_read 的名称,以便我可以将路径中的所有 csv 放入 带有for循环的熊猫,并让它们保留简单易懂的 名字?
在这种情况下,您可以执行的操作数量有限。 DataFrame
对象并没有真正与"名称"相关联,那么,您可以使用描述性变量名称来处理它。
但是,对于您希望创建可变数量的变量的情况,最简单的事情(我会做的(是使用字典。
dfs = {}
for doc in fList:
i = "{}\{}".format(path, x[0])
j = doc.split("_")[-1][:-4]
dfs[j] = pd.read_csv(i)
现在,您可以使用 dfs['race']
引用从ACS_16_5YR_B02001_race.csv
加载的数据帧!