如何在包含一系列浮点数的Pandas索引中找到缺失的行?
我有一个 CSV 文件,其中一列包含一系列具有 0.1 步长间隔的实数。但是,缺少某些值。我已将数据加载到 Pandas DataFrame 并将此列设置为索引。由于浮点数的表示方式,我很难识别缺失的索引值。我想找到丢失的行并用np.nan.
例如,给定
A B
0.0 78.4 65.9
0.1 72.9 29.2
0.3 80.7 45.9
0.4 10.9 82.3
0.5 37.7 85.4
0.6 90.4 69.9
0.7 17.0 57.2
0.8 70.0 49.6
1.0 58.6 65.1
A B
0.0 78.4 65.9
0.1 72.9 29.2
0.3 80.7 45.9
0.4 10.9 82.3
0.5 37.7 85.4
0.6 90.4 69.9
0.7 17.0 57.2
0.8 70.0 49.6
1.0 58.6 65.1
我想得到
A B
0.0 78.4 65.9
0.1 72.9 29.2
0.2 NaN NaN
0.3 80.7 45.9
0.4 10.9 82.3
0.5 37.7 85.4
0.6 90.4 69.9
0.7 17.0 57.2
0.8 70.0 49.6
0.9 NaN NaN
1.0 58.6 65.1
我试过使用pandas.DataFrame.reindex,但由于浮点表示它不起作用。以下是我迄今为止尝试过的(我的数据范围更大):
这输出
A B
0.0 78.4 65.9
0.1 72.9 29.2
0.2 NaN NaN
0.3 NaN NaN
0.4 10.9 82.3
0.5 37.7 85.4
0.6 NaN NaN
0.7 NaN NaN
0.8 70.0 49.6
0.9 NaN NaN
1.0 58.6 65.1
回答
由于 float 不能总是得到 100% 匹配的链接,我们可以通过tolerancewithreindex
out = df.reindex(np.arange(df.index.min(),df.index.max()+0.1,0.1),method='nearest',tolerance=0.01)
A B
0.0 78.4 65.9
0.1 72.9 29.2
0.2 NaN NaN
0.3 80.7 45.9
0.4 10.9 82.3
0.5 37.7 85.4
0.6 90.4 69.9
0.7 17.0 57.2
0.8 70.0 49.6
0.9 NaN NaN
1.0 58.6 65.1