У меня возникла проблема с функцией pandas pivot_table и тем, как она работает со значениями NaN. Пример того, как pandas работает с NaN, приведен ниже:
import pandas as pd
dataframe = pd.DataFrame([[1, 1, 23501, 1000],
[2, 1, 23501, 1000],
[3, None, None, None],
[4, 1, 23501, 1000]],
columns=['A','B' ,
'C', 'D'])
dataframe = dataframe.reset_index().pivot_table(index = ['index', 'A'], columns = ['B'])
print(dataframe)
Результат:
C D
B 1.0 1.0
index A
0 1 23501.0 1000.0
1 2 23501.0 1000.0
3 4 23501.0 1000.0
Проблема с этим подходом заключается в том, что pivot_table полностью удаляет строку, заполненную значениями NaN. . Я посмотрел, что pivot_table имеет флаг dropna, но результат, полученный при использовании, является странным и по-прежнему исключает значения NaN индекса 2.
Результат с dropna:
C D
B 1.0 1.0
index A
0 1 23501.0 1000.0
2 NaN NaN
4 NaN NaN
1 1 NaN NaN
2 23501.0 1000.0
4 NaN NaN
3 1 NaN NaN
2 NaN NaN
4 23501.0 1000.0
Я посмотрел на эту страницу github: https://github.com/pandas-dev/pandas/issues/18030, и при попытке одного из решений, измененных для меня (я думаю), это df.groupby(["A", "B"]).agg('first').unstack([1])
, он дает мне тот же результат, что и простая сводная таблица.
Есть ли возможное решение с использованием других функций pandas, чтобы сохранить значения nan при повороте, чтобы создать что-то вроде:
C D
B 1.0 1.0
index A
0 1 23501.0 1000.0
1 2 23501.0 1000.0
2 3 NaN NaN
3 4 23501.0 1000.0
Спасибо за помощь