python - 使用 for 循环创建 n 个数据帧
问题描述
我想知道如何以不同的方式命名我将使用下面的代码创建的数据框。
import pandas as pd
import glob
os.chdir("/Users/path")
dataframes=[]
paths = glob.glob("*.csv")
for path in paths:
dataset= pd.read_csv(path)
dataframes.append(dataset)
我想要这样的东西:
df1
df2
df3
....
为了将它们中的每一个用于不同的分析目的。在文件夹中,我有类似的文件
analysis_for_market.csv, dataset_for_analysis.csv, test.csv, ...
假设我有23
csv 文件(这个长度由数据帧给出,因为它附加了每个 df)。对于他们每个人,我想在 python 中创建一个数据框 df 以运行不同的分析。我会为其中之一做:
df=pd.read_csv(path)
(路径是"/path/analysis_for_market.csv"
)。然后我可以处理它(添加列,删除它们,等等)。但是,我还希望能够使用另一个数据集,比如说dataset_for_analysis.csv
,所以我需要创建一个新的数据框,df2
。如果我想比较行,这可能很有用。等等。可能我需要每个数据集的 df ,所以我需要23 df
. 我认为可以使用 for 循环来完成,但我不知道如何调用 df(例如,df.describe
为上面的两个示例执行)。你能告诉我怎么做吗?如果您发现可能与我有关的问题,请在关闭我的问题之前将其添加到评论中(因为在解决我的问题之前已关闭之前的帖子)?
感谢您的帮助和理解。
更新:
import os
import pandas as pd
import glob
os.chdir("/Users/path")
paths = glob.glob("*.csv")
dataframes=[]
df={}
for x in range(1,len(paths)):
for path in paths:
df["0".format(x)]=pd.read_csv(path)
#dataframes[path] = df # it gives me the following error: TypeError: list indices must be integers or slices, not str
df["2"]
它仅适用0
于代码中的内容,但我不知道如何让值介于1
和len(paths)
解决方案
设置数据框的名称将完成这项工作。
import pandas as pd
import glob
import os
os.chdir("/Users/path")
df = {}
paths = glob.glob("*.csv")
for index, path in enumerate(paths):
df[str(index)]= pd.read_csv(path)
这对我来说很好。如果我调用 df['0'],这给了我第一个数据帧。
推荐阅读
- html - 如何从 URL 中抓取整个文本正文?
- ios - iOS Objective-C 中的 URL 构建存在哪些本机类?
- apache-spark - pyspark:传递给 cast() 的 dataType arg 的有效字符串
- python - 从 python 脚本自动命令行输入到运行的 python shell-script
- java - 如何修复 javaScriptEnabled ?它总是返回 null
- c - C fwrite() 将 cpu 卡在 100%
- typescript - 打字稿检查未定义并分配给变量
- npm - Travis 错误:包不在 npm 注册表中
- kubernetes - 无法在港口显示图像
- python - 将 DataFrame 列添加到基于另一个列实例的组