Пропустить несколько столбцов между двумя столбцами при добавлении кадра данных к существующему пустому кадру данных - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я извлекаю данные из PDF-файлов и помещаю их в CSV-файл.Я объясню, как это работает.

Сначала я создаю пустой фрейм данных:

ndataFrame = pandas.DataFrame()

Затем я читаю данные.Для простоты предположим, что данные одинаковы для каждого файла pdf:

data = {'shoe': ['a', 'b'], 'fury': ['c','d','e','f'], 'chaos': ['g','h']}
dataFrame = pandas.DataFrame({k:pandas.Series(v) for k, v in data.items()})

Затем я добавляю эти данные к пустому фрейму данных:

ndataFrame = ndataFrame.append(dataFrame)

Вывод:

  shoe fury chaos
0    a    c     g
1    b    d     h
2  NaN    e   NaN
3  NaN    f   NaN

Однако теперь возникает проблема.Мне нужно, чтобы некоторые столбцы (скажем, 4) были пустыми между столбцами ярости и хаоса.Это мой желаемый результат:

  shoe fury                        chaos
0    a    c                         g
1    b    d                         h
2  NaN    e                         NaN
3  NaN    f                         NaN

Я пробовал кое-что с переиндексацией, но не мог понять это.Любая помощь приветствуется.

Кстати, мой желаемый вывод может сбить с толку.Чтобы было ясно, мне нужно, чтобы некоторые столбцы были полностью пустыми между яростью и хаосом (это потому, что некоторые другие данные вводятся туда вручную).

Спасибо за чтение

1 Ответ

0 голосов
/ 05 октября 2018

В этом ответе предполагается, что у вас нет возможности изменить способ чтения данных в восходящем потоке.Как всегда, лучше обрабатывать такие изменения форматирования в источнике.Если это невозможно, вот способ сделать это после анализа.


Вы можете использовать reindex здесь, используя numpy.insert, чтобы добавить четыре столбца:

dataFrame.reindex(columns=np.insert(dataFrame.columns, 2, [1,2,3,4]))

  shoe fury   1   2   3   4 chaos
0    a    c NaN NaN NaN NaN     g
1    b    d NaN NaN NaN NaN     h
2  NaN    e NaN NaN NaN NaN   NaN
3  NaN    f NaN NaN NaN NaN   NaN
...