У меня есть папка с 10000+ файлами, которые содержат данные 10 переменных (X1, X2, ..., X10).
Файлы называются просто File1.json, File2.json и т. Д.
Мне нужно создать фрейм данных для каждой переменной, то есть 10 фреймов данных.
INPUT
- VARIABLES = [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, поэтому я не хочу снова открывать File2, когда я ищу значения X2, X3 и т. д.
Я пытался добавить
k.iloc[ii,i]= ii
где k - это кадр данных с размером нулей (File, VAriable) после условия if, чтобы поместить 1 в столбец i и строки ii, когда файл ii переменной i открыт.Таким образом, я могу пропустить такие файлы с двумя строками во время следующих итераций.Но я не могу получить доступ к значениям k во время цикла for.
Есть предложения?спасибо