首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyTables + Pandas选择问题

PyTables + Pandas选择问题
EN

Stack Overflow用户
提问于 2016-07-16 00:13:49
回答 0查看 181关注 0票数 2

我有一个HDF5 (PyTables)文件,结构如下:

代码语言:javascript
复制
/<User>/<API Key>
ex:
/Dan/A4N5
/Dan/B8P0
/Dave/D3Y7

每个表的结构都是这样的,其中包含一个sessionID和一个以纪元存储的时间:

代码语言:javascript
复制
    sessionID        time
0   3ODE3Nzll  1467590400
1   lMGVkMDc4  1467590400
2   jNzIzNmY1  1467590400
...

我希望Pandas遍历每个表,并获取指定日期和指定日期前一天之间的所有行。目前我有这样的代码:

代码语言:javascript
复制
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)

但是,在select所在的行上抛出错误。

代码语言:javascript
复制
  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)如何修复此错误?

2)是否可以遍历HDF5文件层次结构,以便对相同的Pandas表进行分组?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38400755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档