При выполнении df.groupby().sum()
в pandas nan
с неожиданно преобразуется в 0. Это было отмечено в этом билете GitHub . Билет предполагает, что использование groupby().sum(min_count=1)
правильно вернет ожидаемый nan
. К сожалению, он не работает для timedeltas (см. Полный рабочий пример ниже).
Существуют ли обходные пути для того, чтобы сохранить nan в groupy().sum()
для полей timedelta?
import pandas as pd
from datetime import datetime, date, timedelta
data = [[date(year=2020,month=2,day=1), timedelta(hours=1, minutes=10),timedelta(hours=2, minutes=10) ],
[date(year=2020,month=2,day=2), None, timedelta(hours=2, minutes=10) ],
[date(year=2020,month=2,day=3), timedelta(hours=1, minutes=10),timedelta(hours=2, minutes=10) ],
[date(year=2020,month=2,day=3), timedelta(hours=1, minutes=10),timedelta(hours=2, minutes=10) ]
]
df = pd.DataFrame(data, columns = ['date', 'duration', 'total'])
df.set_index(pd.DatetimeIndex(df['date']), inplace=True)
res=df.groupby(level=0).sum(min_count=1)
display(res)
Ожидаемое:
date | duration | total
2020-02-01 | 01:10:00 | 02:10:00
2020-02-02 | NaT | 02:10:00
2020-02-03 | 02:20:00 | 04:20:00
Но получение
date | duration | total
2020-02-01 | 01:10:00 | 02:10:00
2020-02-02 | 00:00:00| 02:10:00
2020-02-03 | 02:20:00 | 04:20:00