我的数据帧如下所示:
timestamp topAsk topBid CPA midprice CPB spread s
0 2019-03-14 00:00:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
1 2019-03-14 00:01:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
2 2019-03-14 00:02:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
3 2019-03-14 00:03:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
4 2019-03-14 00:04:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
5 2019-03-14 00:05:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
6 2019-03-14 00:06:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
7 2019-03-14 00:07:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
8 2019-03-14 00:08:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
9 2019-03-14 00:09:00 0.00005000 0.00004957 0.00004979 0.00004979 0.00004979 4.3E-7 0.008636272343844145410725045190
当我尝试使用以下代码行添加新列时:df['gamma'] = ((df['midprice'] - df['CPB']) / df['spread'])
出现以下错误: message= Pandas error: [<class 'decimal.DivisionUndefined'>]
是因为我的列df['spread']
真的很小吗?我有点卡住了,谢谢!
df.info()显示:
发布于 2019-04-16 19:35:04
decimal.InvalidOperation: [<class 'decimal.DivisionUndefined'>]
意味着你在某个地方有一个使用Decimal
值的0/0
除法。通过首先测试df['spread']
是否为0很容易找到解决方法,但您真的应该尝试找出用作除数的值可以为空的原因和方式。在这种情况下,我将使用NaN作为结果。代码可以是:
df['gamma'] = df.apply(lambda x:
(x['midprice'] - x['CPB']) / x['spread'] if x['spread'] != 0
else decimal.Decimal('NaN'), axis=1)
https://stackoverflow.com/questions/55705042
复制相似问题