熊猫Pivot_table错误地显示NaN值

时间:2019-02-20 18:34:43

标签: python pandas pivot pivot-table data-analysis

以下是我的数据的原始结构(数据透视前):

    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

...其中包含正确的数据(尽管我不太确定顶部空白行的内容,但这不是我关心的问题。


您知道什么导致显示(或写入csv)完整表时出现多余的NaN,即使在查看单个列时所有值都正确显示了吗?

我已经尝试过here的解决方案

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

但是结果是相同的(除了现在用“ None”代替“ NaN”)。

1 个答案:

答案 0 :(得分:1)

根据您的数据,您可以执行以下操作:

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)

删除您引用的空白ID。