У меня возникла проблема при создании сводной таблицы в пандах. Проблема здесь заключается в значении NaT в поле datetime. Допустим, у меня есть такой набор данных:
import pandas as pd
import numpy as np
values = [5,2,1,3,4,5,6,7,5,10]
names = ['Name1'] * 3 + ['Name2'] * 3 + ['Name3'] * 4
dates = pd.DataFrame({'year': [2015, 2015] * 5,
'month': [2, 3] * 5,
'day': [4, 5] * 5})
dates_dt = pd.to_datetime(dates)
dates_dt.loc[1] = pd.NaT
df = pd.DataFrame({'Name': names, 'Date': dates_dt, 'Values': values})
df
, который выглядит так:
Date Name Values
0 2015-02-04 Name1 5
1 NaT Name1 2
2 2015-02-04 Name1 1
3 2015-03-05 Name2 3
4 2015-02-04 Name2 4
5 2015-03-05 Name2 5
6 2015-02-04 Name3 6
7 2015-03-05 Name3 7
8 2015-02-04 Name3 5
9 2015-03-05 Name3 10
когда я создаю сводную таблицу, которая суммирует значения с датой и именем в качестве индекса, у меня нет строки, соответствующей Name1 и NaT в столбце даты:
pd.pivot_table(
df,
values='Values',
index=['Name', 'Date'],
aggfunc=np.sum,
fill_value=0
).reset_index()
Результирующая сводная таблица:
Name Date Values
0 Name1 2015-02-04 6
1 Name2 2015-02-04 4
2 Name2 2015-03-05 8
3 Name3 2015-02-04 11
4 Name3 2015-03-05 17
Есть ли какой-нибудь элегантный способ (вместо преобразования даты в строку), который помог бы мне не потерять информацию об имени1 и неизвестной дате?