Hallo und guten Tag erst mal.
Ich bin Python Anfänger und habe ein Problem mit der query abfrage in Pandas.
In meiner CSV datei sind in der Spaltenüberschrift unter andern 'Time' , 'Alt(m)', 'Curr(A)' , 'Gas' vorhanden.
Das Öffnen und filtern der CSV Datei geht ohne probleme.
Befehl:
#daten = pandas.read_csv('C:\eigeneProgramme\Python_PC_Programme\ThermikXL-2022-10-18-115341.csv', encoding = "ISO-8859-1" , usecols=['Time' , 'Alt(m)', 'Curr(A)' , 'Gas'] )
print(len(daten))
print(daten.head(2))
Ausgabe:
Time Alt(m) Curr(A) Gas
0 11:53:41.770 2 0.1 -1024
1 11:53:42.500 2 0.1 -1024
Index(['Time', 'Alt(m)', 'Curr(A)', 'Gas'], dtype='object')
query abfrage geht auch wenn ich nach Gas > 1000 filtere
Befehl:
anzeige = daten.query('Gas > 1000')
print (anzeige[['Time' , 'Alt(m)', 'Curr(A)']])
Ausgabe:
Time Alt(m) Curr(A)
4 11:53:45.500 3 1.6
5 11:53:46.500 3 56.8
6 11:53:47.500 4 55.5
7 11:53:48.500 5 53.5
8 11:53:49.500 9 52.8
.. ... ... ...
755 12:06:16.590 134 42.4
756 12:06:17.590 140 45.4
Wenn ich aber nach Alt(m) > 100 filtere , bekomme ich jede menge Fehler
Befehl anzeige = daten.query("Gas > 100 & Alt(m) > 10 ")
Ausgabe:
#Traceback (most recent call last):
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\scope.py", line 198, in resolve
return self.resolvers[key]
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\collections\__init__.py", line 941, in __getitem__
return self.__missing__(key) # support subclasses that define __missing__
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\collections\__init__.py", line 933, in __missing__
raise KeyError(key)
KeyError: 'Alt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\scope.py", line 209, in resolve
return self.temps[key]
KeyError: 'Alt'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 666, in visit_Call
res = self.visit(node.func)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 549, in visit_Name
return self.term_type(node.id, self.env, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\ops.py", line 85, in __init__
self._value = self._resolve_name()
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\ops.py", line 109, in _resolve_name
res = self.env.resolve(local_name, is_local=is_local)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\scope.py", line 211, in resolve
raise UndefinedVariableError(key, is_local) from err
pandas.errors.UndefinedVariableError: name 'Alt' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\eigeneProgramme\Python_PC_Programme\src\csv_Abfrage_01.py", line 37, in <module>
anzeige = daten.query("Gas > 100 & Alt(m) > 10 ")
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
return func(*args, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\frame.py", line 4471, in query
res = self.eval(expr, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
return func(*args, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\frame.py", line 4609, in eval
return _eval(expr, inplace=inplace, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\eval.py", line 353, in eval
parsed_expr = Expr(expr, engine=engine, parser=parser, env=env)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 813, in __init__
self.terms = self.parse()
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 832, in parse
return self._visitor.visit(self.expr)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 421, in visit_Module
return self.visit(expr, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 424, in visit_Expr
return self.visit(node.value, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 750, in visit_BoolOp
return reduce(visitor, operands)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 744, in visitor
rhs = self._try_visit_binop(y)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 739, in _try_visit_binop
return self.visit(bop)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 723, in visit_Compare
return self.visit(binop)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 536, in visit_BinOp
op, op_class, left, right = self._maybe_transform_eq_ne(node)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 456, in _maybe_transform_eq_ne
left = self.visit(node.left, side="left")
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
return visitor(node, **kwargs)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\expr.py", line 670, in visit_Call
res = FuncNode(node.func.id)
File "C:\Users\dell\anaconda3\envs\Python_PC_Programme\lib\site-packages\pandas\core\computation\ops.py", line 614, in __init__
raise ValueError(f'"{name}" is not a supported function')
ValueError: "Alt" is not a supported function
Process finished with exit code 1
Frage: Was mache ich falsch? ,
und wie muss ich eine abfrage machen wenn Sonderzeichen in der Spaltenbeschriftung stehen.
Gruß und Dank
Rainer
Pandas query
Ich wuerde versuchen die mit https://pandas.pydata.org/docs/referenc ... ename.html zu etwas simplen ohne Klammern umzubenennen.
ok habe mit rename so versucht:
aber die Spalten werden nicht verändert.
import pandas
datei = 'C:\eigeneProgramme\Python_PC_Programme\ThermikXL-2022-10-18-115341.csv'
daten = pandas.read_csv((datei), encoding = "ISO-8859-1" , usecols=['Time' , 'Alt(m)', 'Curr(A)' , 'Gas'] )
print(daten.columns)
daten.rename(columns={"Alt(m)": "Alt", "Curr(A)": "Curr"})
print(daten.columns)
Ausgabe:
Index(['Time', 'Alt(m)', 'Curr(A)', 'Gas'], dtype='object')
Index(['Time', 'Alt(m)', 'Curr(A)', 'Gas'], dtype='object')
Process finished with exit code 0
aber die Spalten werden nicht verändert.
import pandas
datei = 'C:\eigeneProgramme\Python_PC_Programme\ThermikXL-2022-10-18-115341.csv'
daten = pandas.read_csv((datei), encoding = "ISO-8859-1" , usecols=['Time' , 'Alt(m)', 'Curr(A)' , 'Gas'] )
print(daten.columns)
daten.rename(columns={"Alt(m)": "Alt", "Curr(A)": "Curr"})
print(daten.columns)
Ausgabe:
Index(['Time', 'Alt(m)', 'Curr(A)', 'Gas'], dtype='object')
Index(['Time', 'Alt(m)', 'Curr(A)', 'Gas'], dtype='object')
Process finished with exit code 0