Я использую Jupyter Notebook для выполнения некоторой базовой обработки естественного языка для нескольких текстовых файлов.Я использую два файла .ipynb.Тот, который я называю «оболочкой», читает в файлах.Он вызывает второй .ipynb (базовая программа), который запускает NLP.
(Как вы можете сказать, я очень новичок в этом. Я признаю, что Jupyter Notebook не идеален для этого, но я использую текущую настройку.)
Файл core приводит к следующему:
return {'Cor':numCor, 'Sub':numSub, 'Ins':numIns, 'Del':numDel}
У меня есть десять текстовых файлов, на которых я хочу запустить основную программу NLP, и я хочу получить фрейм данных со столбцами: 1) Имя файла (извлечено из имени файла txt), 2) Cor, 3) Sub, 4) Ins и 5) Del. Целочисленные результаты будут заполнять строки.
Каждый раз, когда я запускаю ядро:
z=wer(y,x)
он производит это:
{'Cor': 8, 'Sub': 0, 'Ins': 0, 'Del': 52}
Но он производит это в такой форме:
0
Cor 8
Sub 0
Ins 0
Del 52
Мне нужно попытаться транспонировать это, поэтому ясделал это:
df2=pd.Series(z).to_frame()
df2.reset_index()
df = df2.T
Что производит это:
Cor Sub Ins Del
0 8 0 0 52
Пока все хорошо (я думаю).Я хочу использовать команду такого рода для добавления результатов в цикл, где добавляются строки для каждого из 10 текстовых файлов:
orf += [{'Cor': df.Cor, 'Sub': df.Sub, 'Ins': df.Ins}]
'orf' захватывает данные из фрейма данных, и я думаю,это часть моей проблемы.Вот результаты из первых двух текстовых файлов - когда он добавляется из фрейма данных, он также принимает метаданные (не уверен, что это правильный термин), такие как тип данных:
[{'filename': '/Users/jeannehsinclair/COVFEFE/miscues_ORF/anton/716_Anton_test.txt',
'Cor': 0 52
Name: Cor, dtype: int64,
'Sub': 0 3
Name: Sub, dtype: int64,
'Ins': 0 0
Name: Ins, dtype: int64,
'Del': 0 5
Name: Del, dtype: int64},
{'filename': '/Users/jeannehsinclair/COVFEFE/miscues_ORF/anton/936_Anton.txt',
'Cor': 0 60
Name: Cor, dtype: int64,
'Sub': 0 0
Name: Sub, dtype: int64,
'Ins': 0 0
Name: Ins, dtype: int64,
'Del': 0 0
Name: Del, dtype: int64},
Я хочу преобразовать еговернуться к кадру данных.Проблема в том, что когда я конвертирую в фрейм данных, я получаю это (сюда включены только 3 переменные для простоты форматирования):
Cor Ins Sub
0 0 52 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 3 Name: Sub, dtype: int64
1 0 60 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 0 Name: Sub, dtype: int64
2 0 60 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 0 Name: Sub, dtype: int64
3 0 59 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 1 Name: Sub, dtype: int64
4 0 60 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 0 Name: Sub, dtype: int64
5 0 59 Name: Cor, dtype: int64 0 0 Name: Ins, dtype: int64 0 0 Name: Sub, dtype: int64
Я не хочу, чтобы все строки там печатались.Я просто хочу второе целое число в каждой ячейке.Например, для первой строки я просто хочу, чтобы в каждой ячейке было 52, 5, 0, 3.
Что я ищу, чтобы помочь в оптимизации процесса добавления.Я думаю, что есть хороший способ сделать это без двойного преобразования в датафрейм.
В конечном итоге мне нужен фрейм данных, который выглядит следующим образом
Cor Sub Ins Del Filename
1 8 0 1 52 File1
2 6 0 0 52 File2
3 2 2 1 52 File3
4 1 3 0 52 File4
Заранее благодарю за любой совет, который вы могли бы предложить!