首页 > 解决方案 > `TypeError: '<' 在 'str' 和 'int' 的实例之间不支持` Pandas

问题描述

我有一个df股票数据,包括股票名称、近期走势、预期走势(基于我的模型)以及实际走势和预期走势之间的差异。它看起来像这样:

    Stock   Move    Expected  Diff
0   A       77.9    126.03    -48.13
1   B       -58.1   -34.38    -23.72
2   C       8.33    24.67     -16.34
3   D       -67.33  -54.98    -12.35
4   E       -41.91  -30.49    -11.42
5   F       -36.94  -26.33    -10.61

df本身实际上很大,我只是以 5 行为例,但我要做的是遍历其中的每一行,df如果满足某些要求,则打印该行。我iterrows()以这样的方式使用:

for index, rows in df.iterrows():
    if df['Move'] < 0:
        if df['Diff'] < 0:
            print(df['Stock'], df['Move'], df['Diff'])

这会产生 2 个问题。第一个问题让我发疯。当我从头开始运行脚本并通过 API 连接下载实时数据时,出现以下错误:

TypeError: '<' not supported between instances of 'str' and 'int'

来自线路:if df['Move'] < 0:所以我得到了dtype每一列的,它们确实是object

因此,我尝试将两者都转换为int/float以查看是否有帮助,if float(df['Residual']) < 0:但是它会产生此错误消息: TypeError: cannot convert the series to <class 'float'> 因此它甚至不允许我将数据转换为所需的类型,这是我的第一个问题。

因此,我决定将其保存df到 csv 文件,并以这种方式加载数据。出于某种原因,我的列现在是“float64”,这在理论上解决了上面的第一个问题,但后来我收到了这个错误:

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

任何帮助将不胜感激,干杯

标签: pandasdataframeseries

解决方案


推荐阅读