如何在计算时忽略文本
我正在尝试使用Spyder把一个温度测量的表格从华氏度转换为摄氏度,但我遇到了这个错误:“不支持的操作数类型:'str'和'int'”。
我使用的这个函数:
for f in data:
c = round((f-32)/1.8,1)
print(f,c)
这是我的数据:
YEARMODA TEMP MAX MIN AMPLITUDE
0 20160601 65.5 73.6 54.7 18.9
1 20160602 65.8 80.8 55.0 25.8
2 20160603 68.4 NaN 55.6 NaN
3 20160604 57.5 70.9 47.3 23.6
4 20160605 51.4 58.3 43.2 15.1
5 20160606 52.2 59.7 42.8 16.9
6 20160607 56.9 65.1 45.9 19.2
7 20160608 54.2 NaN 47.5 NaN
8 20160609 49.4 54.1 45.7 8.4
9 20160610 49.5 55.9 43.0 12.9
10 20160611 54.0 62.1 41.7 20.4
11 20160612 55.4 64.2 46.0 18.2
12 20160613 58.3 68.2 47.3 20.9
13 20160614 59.7 67.8 47.8 20.0
14 20160615 63.4 70.3 49.3 21.0
15 20160616 57.8 67.5 55.6 11.9
16 20160617 60.4 70.7 55.9 14.8
17 20160618 57.3 NaN 54.0 NaN
18 20160619 56.3 59.2 54.1 5.1
19 20160620 59.3 69.1 52.2 16.9
20 20160621 62.6 71.4 50.4 21.0
21 20160622 61.7 70.2 55.4 14.8
22 20160623 60.9 67.1 54.9 12.2
23 20160624 61.1 68.9 56.7 12.2
24 20160625 65.7 75.4 57.9 17.5
25 20160626 69.6 77.7 60.3 17.4
26 20160627 60.7 70.0 NaN NaN
27 20160628 65.4 73.0 55.8 17.2
28 20160629 65.8 73.2 NaN NaN
29 20160630 65.7 72.7 59.2 13.5
我猜这个错误是因为数据中的文本导致的,但我不太确定怎么让它忽略这些文本,只转换测量值。
2 个回答
0
你可以使用 dataframe.values
来获取所有的数值。如果你只想要某一列的数据,可以用 dataframe["TEMP"].tolist()
。
关于跳过NAN(缺失值),你可以在进行任何计算之前,先检查这个值是不是数字,可以通过检查 type(f)
是否等于 int
来判断。
希望这些对你有帮助!
0
你不需要使用循环。Pandas会自动对所有行进行计算。
data['TEMP'] = round((data['TEMP'] - 32) / 1.8, 1)
对所有包含温度的列都这样做。当值是NaN
时,结果会自动返回NaN
。