パンダマスクは、シリーズまたはDataFrameの形式でブールマスクを返します。ナンシーマスキングは、配列の形でブールマスクを返します。
boolean maskをシリーズまたはデータフレームにマップするには、ブール値の配列を返すよりも少し時間がかかります。
つまり、インデックスにマスクをマッピングしてシリーズを返すのは、df['A'] == 9
を実行したときに追加時間がかかったときです。そうでない場合は、両方が同じになります。
df['A'] == 9
0 False
1 False
2 False
3 False
4 False
Name: A, dtype: bool
type(df['A'] == 9)
pandas.core.series.Series
df['A'].values == 9
array([False, False, False, False, False], dtype=bool)
type(df['A'].values == 9)
numpy.ndarray
をだから、numpyのマスキングは道速い場合、一連のマスキング理由:説明するために
?
は、あなたが今、あなたは彼らのインデックス値
# If you do numpy masking
df2.loc[df['A'].values==4] # First index will be selected no matter what the actual index is
A B C D
4 0 4 5 8
df2.loc[df['A']==4] # Row with that index will be selected
A B C D
0 7 2 8 7
に基づいて、列
df
の
A
4を有している
df2
内の行を選択する別の方法で
df = pd.DataFrame(np.random.randint(0, high=10, size=(5, 4)), columns=list('ABCD'))
A B C D
0 4 9 1 5
1 8 6 5 0
2 5 5 9 5
3 2 5 7 5
4 1 1 7 2
df2 = pd.DataFrame(np.random.randint(0, high=10, size=(5, 4)), columns=list('ABCD'),index=[4,3,2,1,0])
A B C D
4 0 4 5 8
3 9 6 7 2
2 0 9 8 6
1 2 6 2 7
0 7 2 8 7
をソートインデックスを持つデータフレームを持っているとしましょう
さらに、index
とcolumn
のデータを使用してシリーズマスキングが必要な場合があります。ホップは物事を少し良く説明しています。
わかりました。第2のシナリオが速ければ、第1のシナリオを第2のシナリオに使用したいのはなぜでしょうか?そして、彼らは私が言うことができるものとまったく同じことをしているようです。 – bgrantham
はい、あなたが望むなら、2番目のアプローチを使うことができます。しかし、単純なブール値の配列を必要としない場合があります。例を追加しましょう – Dark
@ user2996994更新をチェックしてください – Dark