web-dev-qa-db-fra.com

Exécuter une requête SQL sur un ensemble de données pandas

J'ai un ensemble de données pandas, appelé "df").

Comment puis-je faire quelque chose comme ci-dessous;

df.query("select * from df")

Merci.

Pour ceux qui connaissent R, il existe une bibliothèque appelée sqldf dans laquelle vous pouvez exécuter du code SQL dans R; ma question est fondamentale: existe-t-il une bibliothèque comme sqldf en python?

19
Miguel Santos

Ce n'est pas pandas.query supposé faire, vous pouvez regarder le paquet pandasql (comme sqldf dans R)

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

Vous pouvez utiliser DataFrame.query(condition) pour renvoyer un sous-ensemble du cadre de données correspondant à condition comme ceci:

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

C’est fondamentalement le même effet qu’une instruction SQL, excepté le SELECT * FROM df WHERE est impliqué.

3
user1717828