
3.13
ハイパフォーマンス
pandas
:
eval()
と
query()
213
式でインデクスにもアクセスできます。
In[15]: result1 = df2.T[0] + df3.iloc[1]
result2 = pd.eval('df2.T[0] + df3.iloc[1]')
np.allclose(result1, result2)
Out[15]: True
その他の操作
関数呼び出し、条件分岐、ループ、その他の複雑な構文を使った操作は、今のところ
pd.eval()
に実装されていません。こうした複雑な式を実行したい場合は、
Numexpr
ライブラリを直接使う
必要があります。
3.13.3
DataFrame.eval()
による列単位の操作
pandas
に
pd.eval()
関数があるのと同様に、
DataFrame
にも同様の機能を提供する
eval()
メソッ
ドがあります。
eval()
メソッドの利点は、列を名前で指定できることです。次のラベル付き配列
を例に解説します。
In[16]: df = pd.DataFrame(rng.rand(1000, 3), columns=['A', 'B', 'C'])
df.head()
Out[16]: A B C
0 0.375506 0.406939 0.069938
1 0.069087 0.235615 0.154374
2 0.677945 0.433839 0.652324
3 0.264038 0.808055 0.347197
4 0.589161 ...