如何在计算时忽略文本

-3 投票
2 回答
43 浏览
提问于 2025-04-14 17:32

我正在尝试使用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

撰写回答