выбрать строки из запроса в DataFrame в Pandas - PullRequest
0 голосов
/ 19 сентября 2018

Я уверен, что я спрашиваю, это простой вопрос, но я еще не понял его.У меня есть 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()

Надеюсь, это имеет смысл

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Так что я уверен, что это не лучший обходной путь, но он сработал для меня.

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 в пределах времени, которое я поставил

0 голосов
/ 19 сентября 2018

Как уже упоминалось в Документах Документы

Метод 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']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...