#python #pandas #dataframe #dictionary
#python #панды #фрейм данных #словарь
Вопрос:
У меня есть что-то вроде матрицы пустых фреймов данных.
A = {'folder1':{'case1':pd.Dataframe(), 'case2':pd.Dataframe(),... , 'case8':pd.Dataframe()}
{'folder2':{'case1':pd.Dataframe(), 'case2':pd.Dataframe(),... , 'case8':pd.Dataframe()}
...
{'foldern':{'case1':pd.Dataframe(), 'case2':pd.Dataframe(),... , 'case8':pd.Dataframe()}}
В котором A[folder][case]
находится пустой фрейм данных.
У меня уже есть другой dict of dicts непустых фреймов данных вида
BASIS = {'folder1':{'arch01':pd.Dataframe(...), 'arch02':pd.Dataframe(...)}
{'folder2':{'arch01':pd.Dataframe(...), 'arch02':pd.Dataframe(...)}
...
{'foldern':{'arch01':pd.Dataframe(...), 'arch02':pd.Dataframe(...)}}
В котором BASIS[folder][arch]
находится непустой фрейм данных с большим количеством строк, которые я хочу разделить на другие A[folder]['case']
.
Например, BASIS[folder]['arch01']
будет разделен на A[folder]['case1']
A[folder]['case2']
A[folder]['case3']
По сути, я хочу разделить [arch]
['casei']
, ['casej']
где «i» и «j» — это случаи, когда возникают некоторые условия
Я пытаюсь присвоить значения этим фреймам данных таким образом:
for folder in ['folder1', 'folder2',... 'foldern']:
IRLB = BASIS[folder]["arch01"].copy()
condition01 = IRLB.loc[(IRLB['Column3'].str.contains('AAA',case=False))]
A[folder]['case1'] = A[folder]['case1'].append(condition01)
condition02 = IRLB.loc[(IRLB['Column3'].str.contains('BBB',case=False))]
A[folder]['case2'] = A[folder]['case2'].append(condition02)
... (and other conditions to others cases of A)
Я получаю следующую ошибку:
Заполняется только последняя папка A, остальные все еще пустые фреймы данных.
Комментарии:
1. Я уже пробовал[folder][‘case1’] = condition01 Что происходит, так это то, что последняя [папка] содержит только condition01 для последнего foder. Когда я использую приведенный выше код, [папка] также содержит условие01 для всей предыдущей папки
2. Я думаю, вам может быть лучше воспользоваться одним фреймом данных, который также содержит столбцы, указывающие, какая папка и обращение связаны с каждой строкой
Ответ №1:
Я нашел ошибку. Приношу извинения всем, кто потерял время на ее чтение. Проблема заключалась в следующем: поскольку мой язык португальский, иногда я перебираю папки на португальском языке, как «pasta», я перебирал «folder» и использовал «pasta», поскольку мое последнее значение pasta было относительно последней папки (pasta = ‘foldern’ вне цикла), я использовал всегда последняя папка, а не повторяющаяся папка (‘folder1’, ‘folder2’, n …). Надеюсь, этот пост кому-нибудь поможет, Спасибо