Проходить через df и создавать новые df - PullRequest
1 голос
/ 07 октября 2019

У меня есть набор данных, который выглядит следующим образом:

data = pd.DataFrame([['A',1],['B',4,5],['C',7,8,9]],columns =['Key','Oct','Nov','Dec'])

Key | Oct | Nov | Dec
A   | 1   |     |
B   | 4   | 5   |
C   | 7   | 8   | 9

, и я пытаюсь преобразовать его в набор данных, чтобы каждый раз, когда значение присутствовало, оно добавляло ключ, заголовок столбца,и значение для нового фрейма данных, который будет выглядеть следующим образом:

Key | Month | Amt
A   | Oct   | 1
B   | Oct   | 4
B   | Nov   | 5
C   | Oct   | 7
C   | Nov   | 8
C   | Dec   | 9

Я работаю с пандами, поэтому я подумал, что с помощью iterrows для цикла через df будет работать, но это не дает мне то, что яв конечном итоге после. К вашему сведению, фактический файл состоит из 20 столбцов и 500 строк, но и столбцы, и строки являются динамическими в зависимости от активности дня, поэтому я ищу решение, в котором не требуется явно определять заголовок столбца, если это возможно.

Спасибо!

1 Ответ

1 голос
/ 07 октября 2019

Вы можете использовать стек + reset_index и переименовать столбцы:

import pandas as pd

data = pd.DataFrame([['A', 1], ['B', 4, 5], ['C', 7, 8, 9]], columns=['Key', 'Oct', 'Nov', 'Dec'])

result = data.set_index('Key').stack().reset_index()
result.columns = ['Key', 'Month', 'Amt']  # renames the columns

print(result)

Выход

  Key Month  Amt
0   A   Oct  1.0
1   B   Oct  4.0
2   B   Nov  5.0
3   C   Oct  7.0
4   C   Nov  8.0
5   C   Dec  9.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...