跨行执行聚合函数(例如,平均值)会产生 NaN
Performing an aggregate function (e.g., mean) across rows produces NaN
我正在使用爱荷华州埃姆斯的住房定价数据集,运行 研究我认为很简单的问题。
我根据年月平均价格的枢轴 table 创建了一个数据框。我正在尝试计算平均每月价格。
当我这样做时,我得到的是 NaN 而不是浮点数。
df_viz = pd.DataFrame(pd.pivot_table(df,index=['MoSold'], columns=['YrSold'],values=['SalePrice'],aggfunc='mean').to_records())
df_viz = df_viz.set_index(['MoSold'])
df_viz.columns = [hdr.replace("(", "").replace(")", "").replace("'","").replace(", ","") \
for hdr in df_viz.columns]
df_viz['mean_monthly_saleprice']=df_viz.mean(axis=0)
df_viz
什么给了?我该如何解决这个问题?
谢谢。
您可能指定了错误的轴。尝试:
df_viz['mean_monthly_saleprice']=df_viz.mean(axis=1)
至于为什么您的原始代码返回 na,df_viz.mean(axis=0)
按列生成平均值。结果是一个以列名作为标签的系列:
SalePrice2006 <a number>
SalePrice2007 <a number>
SalePrice2008 <a number>
SalePrice2009 <a number>
SalePrice2010 <a number>
然后您尝试将该系列与 df_viz
数据框合并,该数据框由 MoSold
标记。两个索引之间没有匹配的标签。因此你的结果是 na.
故事的寓意:索引在数据框中非常重要。好好注意他们。
我正在使用爱荷华州埃姆斯的住房定价数据集,运行 研究我认为很简单的问题。
我根据年月平均价格的枢轴 table 创建了一个数据框。我正在尝试计算平均每月价格。
当我这样做时,我得到的是 NaN 而不是浮点数。
df_viz = pd.DataFrame(pd.pivot_table(df,index=['MoSold'], columns=['YrSold'],values=['SalePrice'],aggfunc='mean').to_records())
df_viz = df_viz.set_index(['MoSold'])
df_viz.columns = [hdr.replace("(", "").replace(")", "").replace("'","").replace(", ","") \
for hdr in df_viz.columns]
df_viz['mean_monthly_saleprice']=df_viz.mean(axis=0)
df_viz
什么给了?我该如何解决这个问题?
谢谢。
您可能指定了错误的轴。尝试:
df_viz['mean_monthly_saleprice']=df_viz.mean(axis=1)
至于为什么您的原始代码返回 na,df_viz.mean(axis=0)
按列生成平均值。结果是一个以列名作为标签的系列:
SalePrice2006 <a number>
SalePrice2007 <a number>
SalePrice2008 <a number>
SalePrice2009 <a number>
SalePrice2010 <a number>
然后您尝试将该系列与 df_viz
数据框合并,该数据框由 MoSold
标记。两个索引之间没有匹配的标签。因此你的结果是 na.
故事的寓意:索引在数据框中非常重要。好好注意他们。