我有一个包含 10000 多个文件的文件夹,其中包含 10 个变量(X1、X2、...、X10)的数据。
文件的名称只是 File1.json、File2.json 等。
我需要为每个变量创建一个数据框,即 10 个数据框。
输入
- 变量= [X1, X2, ..., X10]
- FILES= [File1.json, File2.json, ... File14347.json]
期望的输出
- X1, X2, ..., X10 的数据框
我正在做以下事情
for i in range(0, len(VARIABLES)):
%reset_selective -f "^DATA$"
DATA=pd.DataFrame()
Data_name=VARIABLES[i]
print(Data_name)
for ii in range(0, len(FILES)):
file_name1='Directory/'
file_name2= FILES[ii]
file_name=file_name1+file_name2
with open(file_name, 'r') as fer:
data1 = json.load(fer)
df = pd.DataFrame({'count': data1})
Var_namei=df['count']['consistname']
if Var_namei==Data_name:
#create Dataframe
代码对于第一个变量工作正常,因为我不知道哪些文件包含 X1 的数据。
但是,从第二次迭代开始,重新打开每个文件以查找 X2 的数据就没有意义了。 同样,当我到达最后一次迭代时,我应该只打开 X10 的文件。
我想避免打开/考虑其数据已用作 DataFrame 输入的文件,例如File2 包含 X1 的值,因此我不想在查找 X2、X3 等的值时再次打开 File2
我试过添加
k.iloc[ii,i]= ii
其中 k 是 if 条件后的零大小 (File, VAriable) 的数据帧,以便在打开变量 i 的文件 ii 时在 i 列和 ii 行中放置 1。这样,我可以在接下来的迭代中跳过这样的 ii 行文件。 但是,我无法在 for 循环期间访问 k 值。
有什么建议吗? 谢谢
最佳答案
欢迎来到 SO。如果稍微重构一下,您的代码会简单得多。
file_name1='Directory/'
FileDATA={}
for file_name2 in FILES:
file_name=file_name1+file_name2
with open(file_name, 'r') as fer:
data1 = json.load(fer)
if data1['consistname'] in VARIABLES:
# Save the data1 object to FileDATA
# Assuming that every element in VARIABLES is unique
Data_name=data1['consistname']
FileDATA[Data_name] = data1
for Data_name in VARIABLES:
data1 = FileDATA[Data_name]
df = pd.DataFrame({'count': data1})
# create Dataframe
第一个循环遍历所有文件一次,并将对应于 [X1, X2, ..., X10]
变量的数据保存在字典 FileDATA
中.然后您可以遍历变量来处理数据。
删除不需要的行后,
FileDATA={}
for file_name2 in FILES:
with open('Directory/' + file_name2, 'r') as fer:
data1 = json.load(fer)
if data1['consistname'] in VARIABLES:
FileDATA[data1['consistname']] = data1
for Data_name in VARIABLES:
df = pd.DataFrame({'count': FileDATA[Data_name]})
# create Dataframe
关于python - For循环根据指定值排除一些DataFrame行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54806806/