我认为你最好的选择是在读入时删除这些特殊值(这样你dtype
就会是正确的,float64
)。
要做到这一点read_csv
(和大多数类似的功能)有一个na_values
参数:
na_values
: list-like or dict, default None
额外的字符串被识别为 NA/NaN。如果 dict 通过,特定的每列 NA 值
注意:我已经复制ts[55:63]
并使用read_clipboard
了(它也接受了这个参数)。
In [1]: pd.read_clipboard(sep='\s+', header=None, na_values='<0.1')
Out[1]:
0 1
0 2006-08-07 0.880910
1 2006-08-21 1.027876
2 2007-07-10 0.598284
3 2007-07-26 0.800000
4 2007-08-09 NaN
5 2007-08-23 1.013378
6 2008-07-14 0.656889
7 2008-07-29 0.696662
进入(时间)系列,您可以使用:
ts = pd.read_clipboard(sep='\s+', header=None, na_values='<0.1',
index_col=['date'], squeeze=True, names=['date', 'P04'],
parse_dates=['date'])
In [3]: ts
Out[3]:
date
2006-08-07 0.880910
2006-08-21 1.027876
2007-07-10 0.598284
2007-07-26 0.800000
2007-08-09 NaN
2007-08-23 1.013378
2008-07-14 0.656889
2008-07-29 0.696662
Name: P04
这似乎比使用更清洁:
ts[ts.str.contains('<0.1')] = np.nan