【问题标题】:Binning task: I have a list of frequencies which I need to put in bins, facing errors分箱任务:我有一个需要放入分箱的频率列表,面临错误
【发布时间】:2021-05-07 19:20:41
【问题描述】:

我有df['freq'],这是存储为['0.0','0.3','0.9] 的数字列表。 我的任务是将它们分类为 30 个箱子(来自0.0, 0.1,0.2...... till 3.0)

  1. 我已经使用 ravel 函数将其展平

  2. 创建了一个 new_list 用于将这些字符串存储为浮点数

     def binning_function(col,cut_points,labels=None):
     minval = 0.0
     maxval = 3.0
     break_points = [minval] + cut_points + [maxval]
     print(break_points)
     if not labels:
         labels = range(len(cut_points) + 1)
    
     colbin = pd.cut(col,bins=break_points, labels=labels,include_lowest = True ) 
    
     return colbin
    

请参考这段代码sn-p:

错误是

'float' 和 'list' 的实例之间不支持'

【问题讨论】:

  • 你使用<的地方在哪里?我在图片中看不到它。此外,实际代码比图像更好,以供将来参考。
  • 请不要截图,而是复制/粘贴您的代码。
  • pd.cut() 期望类似一维数组,new_list 不是可能导致问题的一维,尽管没有适当的例子很难说。见:pandas.pydata.org/docs/reference/api/pandas.cut.html

标签: python list fft binning


【解决方案1】:

您正在附加列表 x_elem 而不是每个值。结果,程序正在比较一个列表和一个不允许的数字。因此,通过修改 for 循环来附加每个值。

for x_elem in range(len(flat)):
    x_elem = df_ft['freq'].iloc[_].strip("[]").split(", ")
    x_elem = list2float(x_elem)
    for elem in x_elem:
        new_list.append(elem)

【讨论】:

  • 是的!感谢这个工作,面临另一个问题,“Bin 标签必须比 bin 边缘的数量少一个”,现在解决这个问题。
  • 是的!谢谢,它奏效了!我已经接受了这个答案!
猜你喜欢
  • 2013-03-19
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多