以下是我的数据的原始结构(数据透视前):
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”)。
答案 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)