Я работаю над отчетом, и мне нужно создать сводную таблицу.
Некоторый контекст:
- Данные имеют два столбца даты:
- Дата происхождения
- Дата наблюдения
- Каждая строка содержит несколько значений:
Итак, мой оригинальный фрейм данных выглядит примерно так (небольшой пример):
obs_date orig_date payments balance
2017-09-12 2019-09-12 200.00 1700.00
2019-09-19 2019-09-12 0.00 1750.00
2019-09-26 2019-09-12 100.00 1650.00
2019-09-19 2019-09-19 0.00 1235.00
2019-09-26 2019-09-19 300.00 950.00
2019-09-26 2019-09-26 50.00 3435.00
Я пытался использовать Pandas .pivot()
функция на фрейме данных, но я получаю что-то вроде этого:
payments balance
orig_date 2017-09-12 2017-09-19 2017-09-26 2017-09-12 2017-09-19 2017-09-26
obs_date
2017-09-12 200.00 0.00 100.00 1700.00 1750.00 1650.00
2019-09-19 0.00 300.00 1235.00 950.00
2019-09-26 50.00 3435.00
Я хотел бы получить что-то вроде этого:
obs_date 2017-09-12 2017-09-19 2017-09-26
orig_date
2017-09-12 payments 200.00 0.00 100.00
balance 1700.00 1750.00 1650.00
2017-09-19 payments 0.00 300.00
balance 1235.00 950.00
2017-09-26 payments 50.00
balance 3435.00
Итак, есть ли способчтобы получить это?
Пример кода:
import pandas as pd
df = pd.DataFrame({
'obs_date':['2017-09-12', '2017-09-19', '2017-09-26', '2017-09-19', '2017-09-26', '2017-09-26'],
'orig_date': ['2017-09-12', '2017-09-12', '2017-09-12', '2017-09-19', '2017-09-19', '2017-09-26'],
'payments': [200.00, 0.00, 100.00, 0.00, 300.00, 50.00],
'balance': [1700.00,1750.00,1650.00,1235.00,950.00,3435.00]
})
# My unsuccesful attempt:
cols = [c for c in df.columns if c not in ['obs_date', 'orig_date']]
df_pivot = df.pivot(index='orig_date', columns='obs_date', values=cols)