は、以下を使用して、あなたの質問にansweで
import pandas as pd
import numpy as np
df = pd.DataFrame({'b': np.random.rand(10) > 0.5})
df2 = df.iloc[[2,5,6,8]]
df2.reindex(df.index, method='nearest')
を、
why did my approach failed?
Iこれは、NaNがnp.nan
であり、したがって浮動小数点型であるという事実と関係していると考えてください。 reindex
を使用すると、NaNになる前にNaNになります。したがって、元の方法を使用すると、float
とbool
*の混合配列が作成されます。
は我々だけbool
df2.reindex(df.index).astype(bool).interpolate('nearest')
Out[1]:
b
0 True
1 True
2 True
3 True
4 True
5 False
6 False
7 True
8 False
9 True
を上の補間またはそれがTrue
とNaNを埋めるようbool
はむしろ予期せずに動作することだけfloat
df2.reindex(df.index).astype(float).interpolate('nearest')
Out[2]:
b
0 NaN
1 NaN
2 1.0
3 1.0
4 1.0
5 1.0
6 0.0
7 0.0
8 0.0
9 NaN
通知をする方法を参照してください。したがって、元の答えは最も効率的に働くようです。
*これは、エラーメッセージはので、私は少しオフ可能性が言っていることとかなりインラインではありませんが、私は一般的な概念が正しいことだと思います。
'df2.reindex(df.index、method = 'nearest')'は意図したとおりに動作しませんか? –
が動作します。ありがとうございました。投稿は答えです。私はそれを受け入れます。なぜ私のアプローチは失敗しましたか? –