merge
, мы можем выбрать переменную левой таблицы или правой таблицы, так же, как мы все знакомы с оператором select в SQL (EX: выберите a. * ... или выберите b. * из .....) 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)]
То же самое
select b.* from df1 a inner join df2 b on a.CustomerId=b.CustomerId
merge(df1, df2, by.x = "CustomerId", by.y =
"CustomerId")[,names(df2)]
Кажется, ошибка в 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
Вышеупомянутый ответ в значительной степени прав, но хотел упомянуть еще один обходной путь, который я использовал в этой ситуации. В принципе, просто обработайте строку запроса, как и любую другую строку, в которую вы хотите вставить переменную.
my_symbol = 'BUD US'
fills.query("Symbol=='{0}'".format(my_symbol))
изменить: исправлено за ваш комментарий
my_symbol = '"BUD US"'
, но это тоже работает.
– chrisaycock
28 June 2014 в 16:20