Pandas- DataError:没有要聚合的数字类型

时间:2019-12-02 12:11:10

标签: python python-3.x pandas dataframe

我有一个包含5列的DataFrame,我需要聚合的列是字符串,并且具有NaN值。 我尝试用0替换nan值,然后将列转换为数字,但是在执行gruopby和聚合函数时仍然出现“ DataError:没有要聚合的数字类型”。

output$hist <- renderPlot({
   data  <- simulate()$data
   model <- simulate()$model
   intercept = model[["coefficients"]][["(Intercept)"]]
   intercept_g1 = model[["coefficients"]][["group1"]]
   intercept_g2 = model[["coefficients"]][["group2"]]
   ggplot(data, aes(x=response, fill=group)) + 
      geom_density(data = subset(data, group="group1"), alpha=.5) + 
      geom_density(data = subset(data, group="group2"), alpha=.5) +
      geom_density(data = subset(data, group="group3"), alpha=.5) +
      geom_vline(xintercept=intercept) +
      geom_vline(xintercept=intercept_g1) +
      geom_vline(xintercept=intercept_g2)
})

enter image description here

错误: enter image description here

1 个答案:

答案 0 :(得分:1)

有2个问题,您忘记分配回去,并且如果errors ='ignore'和列中至少有一个非可写值,则它返回的列将保持不变:

pd.to_numeric(df['Profit (in millions)'], errors ='ignore')

to_numeric

  

错误:{'ignore','raise','coerce'},默认为'raise'

     

如果'raise',则无效的解析将引发异常
  如果为'coerce',则无效的解析将设置为NaN
  如果“ 忽略”,则无效的解析将返回输入

因此使用errors ='coerce'并将输出返回到列:

df['Profit (in millions)'] = pd.to_numeric(df['Profit (in millions)'], errors ='coerce')