Python - преобразование серии (или списка) в фрейм данных, нужны только значения - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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

Заранее благодарю за любой совет, который вы могли бы предложить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...