Я уверен, что я задаю простой вопрос, но еще не понял. У меня есть panda df, и я хочу запустить этот базовый запрос на нем
Select a,b,c
FROM TABLE
WHERE (TABLE.time >= x ) && (TABLE.time <= y)
GROUP BY c
поэтому, если у меня есть таблица
A B time
a b time1
c d time2
e f time3
Я хотел бы только вернуть a, b, c, где время больше или меньше, чем те, что указаны в запросе. Также будет ли этот запрос на Dataframe дать мне другой df, если я назначу запрос переменной, скажу что-то вроде
df2 = df.query()
Я надеюсь это имеет смысл
Как упоминалось в Документах Документов
По умолчанию метод query() использует слегка модифицированный синтаксис Python. Он используется для применения условия, как больше, чем меньше. метод запроса не поддерживает группу сам по себе, а в кадре данных есть метод groupby, который работает одинаково.
Я попытался написать код для вашего запроса, посмотрев на него:
g= table.query('time>=x and time<y').groupby('C')
for name,group in g:
print(name , group[['a','b','c']])
Без использования query():
g = table[(table.time>=x) & (table.time <= y)].groupby('C')
for name,group in g:
print(name , group[['a','b','c']])
Поэтому я уверен, что это не лучшая работа, но это сработало для меня.
df = pd.read_excel("file.xlsx", index_col= None, na_values=['NA'] , usecols=[18,4,5,21,0,1])
df2 = df[(df.TIME >= x) , (df.TIME <= y)]
df3 = df2[['a','b','c']]
Это поможет мне получить a, b, c в пределах диапазона времени, который я ставлю
df.query
если вы не знаете pandas.pydata.org/pandas-docs/version/0.22.0/generated/…