PyTables + Pandas Probleme auswählen
Ich habe eine HDF5-Datei (PyTables), die folgendermaßen aufgebaut ist:
/<User>/<API Key>
ex:
/Dan/A4N5
/Dan/B8P0
/Dave/D3Y7
Jede Tabelle ist mit einer SessionID und einer in der Epoche gespeicherten Zeit wie folgt aufgebaut:
sessionID time
0 3ODE3Nzll 1467590400
1 lMGVkMDc4 1467590400
2 jNzIzNmY1 1467590400
...
Ich möchte, dass Pandas jede Tabelle durchgehen und alle Zeilen zwischen einem bestimmten Datum und dem Tag vor dem angegebenen Datum abrufen. Zur Zeit habe ich diesen Code:
scriptPath = os.path.dirname(os.path.abspath(__file__))
argdate = "2016/07/14"
dayTimestamp = datetime.datetime(int(argdate[0:4]), int(argdate[5:7]), int(argdate[8:10]), tzinfo=pytz.utc)
yesterdayTimestamp = dayTimestamp - datetime.timedelta(days=1)
with pd.HDFStore(os.path.join(scriptPath, "userdatabase.h5")) as db:
for table in db.keys():
print(table)
tableSplit = table.split('/')
client = tableSplit[1]
apiKey = tableSplit[2]
df = db.select('{}/{}'.format(client, apiKey), where='time<=int(dayTimestamp.timestamp()) & time>=int(yesterdayTimestamp.timestamp())')
print(df)
Jedoch wirft ein Fehler in der Zeile, in der sich Select befindet.
File "tester.py", line 570, in database
df = db.select('{}/{}'.format(client, apiKey), where='time<=int(dayTimestamp.timestamp()) & time>=int(yesterdayTimestamp.timestamp())')
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 680, in select
return it.get_result()
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 1364, in get_result
results = self.func(self.start, self.stop, where)
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 673, in func
columns=columns, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 4021, in read
if not self.read_axes(where=where, **kwargs):
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 3222, in read_axes
self.selection = Selection(self, where=where, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 4580, in __init__
self.terms = self.generate(where)
File "/usr/local/lib/python3.4/dist-packages/pandas/io/pytables.py", line 4593, in generate
return Expr(where, queryables=q, encoding=self.table.encoding)
File "/usr/local/lib/python3.4/dist-packages/,pandas/computation/pytables.py", line 517, in __init__
self.terms = self.parse()
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 727, in parse
return self._visitor.visit(self.expr)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 317, in visit_Module
return self.visit(expr, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 320, in visit_Expr
return self.visit(node.value, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 655, in visit_BoolOp
return reduce(visitor, operands)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 647, in visitor
lhs = self._try_visit_binop(x)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 643, in _try_visit_binop
return self.visit(bop)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 628, in visit_Compare
return self.visit(binop)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 401, in visit_BinOp
op, op_class, left, right = self._possibly_transform_eq_ne(node)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 354, in _possibly_transform_eq_ne
right = self.visit(node.right, side='right')
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 311, in visit
return visitor(node, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/pandas/computation/expr.py", line 615, in visit_Call_legacy
return self.const_type(res(*args, **keywords), self.env)
TypeError: 'str' object is not callable
1) Wie behebe ich diesen Fehler?
2) Kann ich die HDF5-Dateihierarchie durchlaufen, um Pandas-Tabellen derselben zu gruppieren?