Pandas pivot_table неправильно показывает значения NaN - PullRequest
0 голосов
/ 20 февраля 2019

Ниже приведена исходная структура моих данных (предварительная сводка):

    product    reviewer    rating
0       foo       userA        81
1       bar       userB        96
2       foo       userB        75
3       xyz       userA        42

Я запускаю:

df = pd.pivot_table(df, index="product", columns="reviewer", values="rating")

, которая создает новый план данных, выложенныйправильно, но таинственно показывает гораздо больше NaN, чем принадлежит:

       userA    userB
foo      NaN       75
bar      NaN       96
xyz      NaN      NaN

Интересно, если я посмотрю на df ['userA'] :

product
      NaN
foo    81
bar    96
xyz   NaN

... который содержит правильные данные (хотя я не совсем уверен, что случилось с пустой строкой вверху, но это не моя забота).


Любая идея, что может вызвать дополнительныеNaN, отображаемые при отображении (или записи в csv) полной таблицы, даже если все значения отображаются правильно при просмотре одного столбца?

Я пробовал решение из здесь

df.set_index(['product', 'reviewer', 'rating']).unstack('reviewer')

, но результат тот же (за исключением того, что теперь вместо «NaN» вместо «NN»).

1 Ответ

0 голосов
/ 20 февраля 2019

На основании ваших данных вы можете сделать:

df_new=pd.pivot_table(df, index="product", columns="reviewer", values="rating").rename_axis(None,1)
print(df_new)

         userA  userB
product              
bar        NaN   96.0
foo       81.0   75.0
xyz       42.0    NaN

Пустой идентификатор, который вы указали, можно удалить, позвонив по номеру rename_axis(None,1)

...