У меня есть список полей и кортежей dataFrames (без заголовков):
fields = [field1, field2, field3]
dataFrames = (df1,df2,df3)
Теперь нужно найти вхождения field1,field2,field3
во всех dataframes
и сохранить индекс для каждого dataframe
. в конце у меня будет следующее:
{field1: df3, 4} # for example . 4 is the index found in df3 for field1
что я сделал, используя pandas:
dict = {}
for dataframe in dataframes:
for index, row in dataframe.iterrows():
fieldToSerachInDataFrame = row[1] # location of field name in dataframe
indexInDataFrame = row[0] # index of the field in dataframe
for field in fields:
if fieldToSerachInDataFrame == field:
fieldName = row[2].split('0', 1)[1] # here i just doing some parsing on the field name
dict[fieldName] = [field, indexInDataFrame] # After we have a match - save field name in dictionary with his index in file
break; # if found -stop the iteration
return dict
Интересно, есть более эффективный способ сделать это, используя SQL с меньшим количеством строк и меньшей сложностью (независимо от того, как вы храните данные, главное - хранить индексы каждого поля в указанных файлах )