【问题标题】:ValueError in binning the dataframe with lists of values将数据框与值列表分箱时的 ValueError
【发布时间】:2021-04-13 06:44:07
【问题描述】:

我正在尝试将 bin 分配给数据框,我正在这样做但创建 bin 然后将它们作为参数传递但它一直失败(可能是因为数据框有值列表而不是值)

我正在尝试将列的频率设置为 bin。列中的每个频率都是频率列表,格式如下:

         Freq   Theta
0  191.300003  [-54.0, -52.9999, -52.0001, -51.0]
1  191.929001  [-58.9999, -58.0001, -57.0, -55.9999]

这不是完整的数据集,大约有 15 个 theta 值,它们从 -60 度延伸到 +60 度 我尝试通过执行以下操作将它们放入垃圾箱:

theta_bins = np.linspace(-60,60,60)
final_lut['binned']=pd.cut(final_lut['Theta'], theta_bins, include_lowest=True)

但是当我运行它时,我遇到了以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

通过进一步阅读堆栈,我遇到了这个问题:2D array binning,我试图在解析之前压平 Theta 值,但错误仍然存​​在。 任何想法为什么会发生这种情况以及如何将 thetas 修复到 2 度的 bin 中,将不胜感激。谢谢!

【问题讨论】:

    标签: python-3.x pandas dataframe numpy nested-lists


    【解决方案1】:

    如果想使用pd.cut,首先需要DataFrame.explode,因为它不能与list一起使用(就像许多熊猫方法一样):

    df = final_lut.explode('Theta')
    
    theta_bins = np.linspace(-60,60,60)
    df['binned']=pd.cut(df['Theta'], theta_bins, include_lowest=True)
    

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 2013-03-17
      • 1970-01-01
      • 2021-08-08
      • 2019-12-25
      • 1970-01-01
      相关资源
      最近更新 更多