在'str'和'float'的实例之间不支持Pandas:TypeError:'> ='

时间:2018-11-10 21:26:43

标签: python pandas

我正在尝试查找以下数据样本的每月最大阵风:

         maxtemp    mintemp meantemp    heatdays    cooldays    rain    snow precip groundsnow  maxgustdir  maxgustspd
  time                                          
 2018-01-01 -1.3    -8.1    -4.7    22.7    0.0 0.0 1.0 0.2 17.0    26.0    54
 2018-01-02 -0.9    -7.4    -4.2    22.2    0.0 0.0 0.0 0.0 17.0    26.0    41
 2018-01-03 -3.0    -7.9    -5.5    23.5    0.0 0.0 0.4 0.2 17.0    27.0    70
 2018-01-04 0.0 -11.0   -5.5    23.5    0.0 2.4 7.2 8.4 11.0    12.0    96
 2018-01-05 10.0    -0.3    4.9 13.1    0.0 11.0    0.0 11.0    10.0    14.0    70   

这是我的代码:

w['maxgustspd'].resample('M').max()

如您所见,我已将数据重新采样为每月一次,并试图获取每月的最大值。问题是浮点数和字符串值(即<31)混合在一起,所以我得到了错误:

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

任何想法如何忽略字符串dtypes?

2 个答案:

答案 0 :(得分:0)

如果感兴趣的是<31值,则需要进行清理以除去<并将其转换为浮点数。如果不需要str值,则可以将其转换为NaN,.max将忽略它们。

w.maxgustspd = w.maxgustspd.map(lambda x: x if type(x) != str else np.NaN) w['maxgustspd'].resample('M').max()

答案 1 :(得分:0)

您的数据间隔有点奇怪,您没有发布数据的导入方式,所以我只能冒险猜测。

您确定maxgustspd中的所有列都有数据吗?当我有一系列字符串的数据帧中有一些空隙时,我已经看到了您描述的问题。差距以NaN的形式填补,而其余系列以字符串形式保留。

因此,请检查已导入的数字数据的类型(并在必要时将其转换为浮点型)...如果数据导入中存在怪异的间隙,则可以考虑解决数据问题或使用{{ 1}},如果列/行像发布的数据一样不断移动