我正在尝试查找以下数据样本的每月最大阵风:
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?
答案 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}},如果列/行像发布的数据一样不断移动