0

我正在尝试比较列中的值并将它们替换为上/下。基本上,标记数据框。

这是我正在使用的代码。

dataset['UpDown'] = dataset['Return_Out']
dataset.UpDown[dataset.UpDown < 0] = 'Down'
dataset.UpDown[dataset.UpDown >= 0] = 'Up'

“向下”部分完美运行。之后,列中的数字将转换为 9090999..-e 格式,并且在“向上”行中出现以下错误。

TypeError: '>=' not supported between instances of 'str' and 'int'

标记 Down 部分之前的屏幕截图

添加“向下”后的部分输出图像

样本数据集截图

4

1 回答 1

2

第一行工作正常,因为在那一点上,dataset.UpDown很可能是类似int的(具体来说,int64如果我不得不猜测,可能是一个 dtype)。所以比较0工作正常。但是线

dataset.UpDown[dataset.UpDown < 0] = 'Down'

还将制作该列的一些元素str并制作该列 dtype object

当您进行第二次比较时,Pandas 不喜欢您将str('Down') 元素与整数进行比较。(0 >= 'x'在纯 Python 中技术上是可以的,但 Pandas 不允许。)

相反,您可以将这两行都替换为:

dataset['UpDown'] = np.where(dataset.UpDown < 0, 'Down', 'Up')
于 2019-02-15T15:58:54.040 回答