Использовать кортеж как условие в запросе pandas [duplicate]

  1. Используя функцию merge, мы можем выбрать переменную левой таблицы или правой таблицы, так же, как мы все знакомы с оператором select в SQL (EX: выберите a. * ... или выберите b. * из .....)
  2. Мы должны добавить дополнительный код, который будет подмножаться из недавно объединенной таблицы. SQL: - select a.* from df1 a inner join df2 b on a.CustomerId=b.CustomerId R: - merge(df1, df2, by.x = "CustomerId", by.y = "CustomerId")[,names(df1)]

То же самое

  • SQL: - select b.* from df1 a inner join df2 b on a.CustomerId=b.CustomerId
  • R: - merge(df1, df2, by.x = "CustomerId", by.y = "CustomerId")[,names(df2)]
8
задан chrisaycock 31 May 2014 в 22:32
поделиться

2 ответа

Кажется, ошибка в 0.14, особенно со строками (работает, например, с помощью ints). Я здесь указал: https://github.com/pydata/pandas/issues/7300 . В качестве обходного пути вы можете обернуть его в список:

In [40]: fills
Out[40]: 
    Price  Symbol
0  109.70  BUD US
1  109.72  BUD US
2  183.30  IBM US
3  183.35  IBM US

In [41]: my_symbol = ['BUD US']

In [42]: fills.query('Symbol==@my_symbol')
Out[42]: 
    Price  Symbol
0  109.70  BUD US
1  109.72  BUD US
9
ответ дан joris 21 August 2018 в 10:17
поделиться

Вышеупомянутый ответ в значительной степени прав, но хотел упомянуть еще один обходной путь, который я использовал в этой ситуации. В принципе, просто обработайте строку запроса, как и любую другую строку, в которую вы хотите вставить переменную.

my_symbol = 'BUD US'
fills.query("Symbol=='{0}'".format(my_symbol))

изменить: исправлено за ваш комментарий

2
ответ дан choldgraf 21 August 2018 в 10:17
поделиться
  • 1
    На самом деле это должно быть my_symbol = '"BUD US"', но это тоже работает. – chrisaycock 28 June 2014 в 16:20
Другие вопросы по тегам:

Похожие вопросы: