読むときにこれらの特別な値を削除するのが最善の策だと思います(そうすれば、あなたdtypeは正しいでしょうfloat64)。
これを行うにはread_csv(およびほとんどの同様の関数)、na_values引数があります。
na_values: list-like または dict、デフォルト 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