【问题标题】:polyfit, TypeError: must be str, not floatpolyfit,TypeError:必须是 str,而不是 float
【发布时间】:2017-11-26 16:14:42
【问题描述】:

代码如下:

m, b = np.polyfit(df['Combined Length'], df['Mean Runtime'], 1)

该行产生错误:'TypeError: must be str, not float'。为什么它需要一个字符串?如果我输入 (2,3,4) 和 (4,6,8) 它工作正常。如果两个pandas列也转换为ndarrays,它也不起作用。

在初始转换为数组时出现问题。

【问题讨论】:

  • TypeError 发生在什么函数中?只需阅读堆栈跟踪。
  • polyfit 做的第一件事是 np.asarray(X)Y - 即将 2 个输入转换为数组。 np.asarray(df['Combined Length']) 有效吗?如果没有,请查看从 df 列中提取数组的正确方法。

标签: python pandas numpy


【解决方案1】:

它适用于这个玩具数据框:

In [441]: df = pandas.DataFrame(np.arange(12).reshape(3,4),columns=list('ABCD')
     ...: )
In [442]: df
Out[442]: 
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
In [443]: np.asarray(df['C'])
Out[443]: array([ 2,  6, 10])
In [444]: np.polyfit(df['B'],df['C'],1)
Out[444]: array([ 1.,  1.])

你的有什么不同?

【讨论】:

    【解决方案2】:

    将 pd.to_numeric 应用于列解决了问题。它们是对象类型。我不确定为什么错误消息要求“str not float”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多