Skip to main content
 首页 » 编程设计

python之将特定字符串转换为 Pandas 中的数值

2025年05月04日38java哥

我正在尝试对一些降雨数据进行数据分析。数据示例如下所示:-

10   18/05/2016   26.9     40    20.8     34   52.2    20.8   46.5     45    
11   19/05/2016   25.5     32     0.3   41.6     42     0.3   56.3   65.2    
12   20/05/2016    8.5     29    18.4      9     36    18.4   28.6     46    
13   21/05/2016   24.5     18   TRACE    3.5     17   TRACE    4.4     40    
14   22/05/2016    0.6     18       0    6.5     14       0    8.6     20    
15   23/05/2016    3.5      9     0.6    4.3     14     0.6      7     15    
16   24/05/2016    3.6     25       T      3     12       T   14.9      9    
17   25/05/2016     25     21     2.2   25.6     50     2.2     25      9    

降雨数据包含特定字符串“TRACE”或“T”(均表示不可测量的降雨量)。为了进行分析,我想将此字符串转换为“1.0”( float )。我想要的数据应该是这样的,以便将值绘制为折线图:-

10   18/05/2016   26.9     40    20.8     34   52.2    20.8   46.5     45    
11   19/05/2016   25.5     32     0.3   41.6     42     0.3   56.3   65.2    
12   20/05/2016    8.5     29    18.4      9     36    18.4   28.6     46    
13   21/05/2016   24.5     18     1.0    3.5     17     1.0    4.4     40    
14   22/05/2016    0.6     18       0    6.5     14       0    8.6     20    
15   23/05/2016    3.5      9     0.6    4.3     14     0.6      7     15    
16   24/05/2016    3.6     25     1.0      3     12     1.0   14.9      9    
17   25/05/2016     25     21     2.2   25.6     50     2.2     25      9    

有人能给我指出正确的方向吗?

请您参考如下方法:

您可以使用 df.replace ,然后使用 df.astype 将数字转换为 float(原始数据类型为 object,因此对这些列的任何操作仍然会受到影响来自性能问题):

df = df.replace('^T(RACE)?$', 1.0, regex=True) 
df.iloc[:, 1:] = df.iloc[:, 1:].astype(float) # converting object columns to floats  

这会将所有 T 或 TRACE 元素替换为 1.0。

输出:

10  18/05/2016  26.9  40  20.8  34.0  52.2  20.8  46.5  45.0 
11  19/05/2016  25.5  32   0.3  41.6  42.0   0.3  56.3  65.2 
12  20/05/2016   8.5  29  18.4   9.0  36.0  18.4  28.6  46.0 
13  21/05/2016  24.5  18     1   3.5  17.0     1   4.4  40.0 
14  22/05/2016   0.6  18     0   6.5  14.0     0   8.6  20.0 
15  23/05/2016   3.5   9   0.6   4.3  14.0   0.6   7.0  15.0 
16  24/05/2016   3.6  25     1   3.0  12.0     1  14.9   9.0 
17  25/05/2016  25.0  21   2.2  25.6  50.0   2.2  25.0   9.0