Выполнение SQL-запроса по набору данных pandas

У меня есть набор данных pandas, называемый 'df'.

Как я могу сделать что-то вроде ниже;

df.query("select * from df")

Спасибо.

Для тех, кто знает R, есть библиотека sqldf, где вы можете выполнить SQL-код в R, мой вопрос в основном, есть ли какая-то библиотека, такая как sqldf в python

Ответы

Ответ 1

Это не pandas.query должен делать, вы можете посмотреть на пакет pandasql (такой же, как sqldf в 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

Ответ 2

Вы можете использовать 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

Это в основном тот же эффект, что и оператор SQL, за исключением SELECT * FROM df WHERE.