web-dev-qa-db-ja.com

pandasデータセットに対するSQLクエリの実行

「df」というpandasデータセットがあります。

以下のようなことができますか?

df.query("select * from df")

ありがとうございました。

Rを知っている人のために、RでSQLコードを実行できるsqldfというライブラリがあります。私の質問は基本的に、pythonのsqldfのようなライブラリがあります

19
Miguel Santos

これは pandas.query ではありません。パッケージpandasqlを見ることができます(Rのsqldfと同じです)

import pandas as pd
import pandasql as ps

df = pd.DataFrame([[1234, 'Customer A', '123 Street', np.nan],
               [1234, 'Customer A', np.nan, '333 Street'],
               [1233, 'Customer B', '444 Street', '333 Street'],
              [1233, 'Customer B', '444 Street', '666 Street']], columns=
['ID', 'Customer', 'Billing Address', 'Shipping Address'])

q1 = """SELECT ID FROM df """

print(ps.sqldf(q1, locals()))

     ID
0  1234
1  1234
2  1233
3  1233
44
WeNYoBen

DataFrame.query(condition)を使用して、次のようにconditionに一致するデータフレームのサブセットを返すことができます。

df = pd.DataFrame(np.arange(9).reshape(3,3), columns=list('ABC'))
df
   A  B  C
0  0  1  2
1  3  4  5
2  6  7  8

df.query('C < 6')
   A  B  C
0  0  1  2
1  3  4  5


df.query('2*B <= C')
   A  B  C
0  0  1  2


df.query('A % 2 == 0')
   A  B  C
0  0  1  2
2  6  7  8

これは、SELECT * FROM df WHEREが暗示されることを除いて、基本的にSQLステートメントと同じ効果です。

3
user1717828