Keine Abfrage eine lokale variable in pandas 0.14.0
Kann ich der Abfrage einen expliziten Wert:
fills.query('Symbol=="BUD US"')
Nun möchte ich eine Abfrage variable:
In [40]: my_symbol
Out[40]: 'BUD US'
In pandas 0.13.1, konnte ich einfach nutzen:
fills.query('Symbol==my_symbol')
Dies ist nicht mehr erlaubt, in pandas 0.14.0 weil lokale Variablen müssen explizit erwähnt. Also versuchte ich
fills.query('Symbol==@my_symbol')
aber das hat einen Fehler zurückgegeben
KeyError: '__pd_eval_local_my_symbol'
War ich in der Lage zu ändern, einige meiner anderen code verwenden, die explizit lokale Variablen, aber dieses gerade nicht. Irgendwelche Gedanken? Die "dtype" wird object
, wenn das hilft.
- Kannst du uns ein kleines reproduzierbares Beispiel (ausführbarer code, der diesen Fehler)?
fills = pd.DataFrame({'Symbol':['BUD US', 'BUD US', 'IBM US', 'IBM US'], 'Price':[109.70, 109.72, 183.30, 183.35]})
- Problemumgehung: es wird funktionieren, wenn
my_symbol
ist eine Liste:my_symbol = ['BUD US']
- Hey, das hat funktioniert! Also, was brach in 0.14.0? Ich war in der Lage, Abfragen in 0.13.1 als Skalare.
- Ah, hab dein Kommentar erst jetzt, scheint, haben wir herausgefunden das gleiche 🙂
- Diese wurde von github.com/pydata/pandas/commit/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint ein bug in 0.14, speziell bei Streichern (funktioniert z.B. mit int-Werten). Ich reichte ein Problem hier: https://github.com/pydata/pandas/issues/7300.
Als workaround für jetzt, Sie können wickeln Sie es in eine Liste:
Die obige Antwort ist ziemlich genau, aber erwähnen wollte eine andere Lösung, die ich verwendet habe, in dieser situation. Im Grunde, so behandeln Sie die Abfrage-string wie jede andere Zeichenfolge, wo Sie wollen würde, um eine variable einfügen.
edit: fixiert Ihr Kommentar
my_symbol = '"BUD US"'
, aber das funktioniert auch.