Python For循环基于指定值排除某些数据帧行

Python For循环基于指定值排除某些数据帧行,python,pandas,dataframe,for-loop,jupyter-notebook,Python,Pandas,Dataframe,For Loop,Jupyter Notebook,我有一个包含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_select

我有一个包含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的文件。

我希望避免打开/考虑其数据已被用作数据帧输入的文件,例如File2包含X1的值,因此在查找X2、X3等值时,我不希望再次打开File2

我试着补充一下

k.iloc[ii,i]= ii
其中k是if条件后大小为零(文件、变量)的数据帧,以便在变量i的文件ii打开时在i列和ii行中放置1。这样,我可以在下一次迭代中跳过这样的ii行文件。 但是,在for循环期间,我无法访问k值

有什么建议吗?
谢谢

欢迎来到SO。如果重构一点,代码会简单得多

file\u name1='Directory/'
FileDATA={}
对于文件中的文件名2:
文件名=文件名1+文件名2
打开(文件名为“r”)作为fer:
data1=json.load(fer)
如果变量中的data1['consistname']:
#将data1对象保存到FileDATA
#假设变量中的每个元素都是唯一的
Data_name=data1['consistname']
FileDATA[Data\u name]=data1
对于变量中的数据名称:
data1=文件数据[数据名称]
df=pd.DataFrame({'count':data1})
#创建数据帧
第一个循环遍历所有文件一次,并将与
[X1,X2,…,X10]
变量对应的数据保存在字典
文件数据中。然后您可以循环变量来处理数据

删除不必要的线路后

FileDATA={}
对于文件中的文件名2:
以open('Directory/'+file_name2,'r')作为fer:
data1=json.load(fer)
如果变量中的data1['consistname']:
FileDATA[data1['consistname']]=data1
对于变量中的数据名称:
df=pd.DataFrame({'count':FileDATA[Data\u name]})
#创建数据帧

能否请您缩进代码的第一个for循环,并提供输入和所需结果的示例?每个文件包含单个值还是多个值?多个值,从100到50000个值。每个文件的数据量事先是未知的,即我需要打开文件并提取所有值以了解它们的数量。您是否尝试使用pd.read_json将每个文件读入数据帧,然后根据列进行处理?是的,问题是这些文件是嵌套的json,因此我在“第一级”,然后是第二级的数据和子变量,我得到的是
json.load(first_json\u variable)