PythonPandas在if条件下:崩溃未知

2024-04-30 01:08:54 发布

您现在位置:Python中文网/ 问答频道 /正文

一个特别的问题,当if条件命中代码崩溃时,代码中的错误是什么。 这不是python的原始代码,而是将其转换为python代码

efratio=noise!=0 ? signal/noise : 1

stockdata的背景只是数组中的数据帧值。数组列表有噪声值,当我把它与Python中的!=0比较时,我不知道程序为什么会崩溃。你知道吗

我应该在这里使用numpy吗,因为这个数据帧有数据系列的列表?你知道吗

    if (stockdata['noise']!= 0):
        stockdata['efratio']= (stockdata['signal']/stockdata['noise'])
    else :
        stockdata['efratio']= 1

    or
   stockdata['efratio']= (stockdata['signal']/stockdata['noise']) if (stockdata['noise']!= 0) else 1

编辑1: 例外是

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()


Tags: or数据代码列表signalif错误数组
2条回答

更改:

if (stockdata['noise']!= 0):
        stockdata['efratio']= (stockdata['signal']/stockdata['noise'])
else :
    stockdata['efratio']= 1

收件人:

import numpy as np

stockdata['efratio'] = np.where(stockdata['noise'] != 0,
                                stockdata['signal'] / stockdata['noise'], 1)

发生的情况如下:

where(condition, [x, y])

Return elements, either from x or y, depending on condition.

可能是这样的:

import pandas as pd

stockdata = pd.DataFrame({'noise': [10, 4, 0], 'signal': [1, 2, 3]})

logic = stockdata['noise'] != 0
stockdata['efratio'] = 1.0

stockdata['efratio'][logic] = stockdata['signal'][logic] / (stockdata['noise'][logic])

相关问题 更多 >