小编Om *_*Nom的帖子

pandas的read_sql,带有WHERE条件的值列表

假设一个数据帧scoreDF:

          date       time      score
sec_code
1048      2015-02-25 09:21:00     28
2888      2015-02-25 09:21:00     25
945       2015-02-25 09:21:00     23
4         2015-02-25 09:21:00     22
669       2015-02-25 09:21:00     15
Run Code Online (Sandbox Code Playgroud)

我需要做一个MySQL查询检索匹配值的所有行scoreDF.indexsec_code列.

通常我会去一个循环:

    finalResultDF = DataFrame()

    queryString = 'SELECT * FROM tableA WHERE sec_code = ' + code

    for code in scoreDF.index:
        queryResultDF = sql.read_sql(queryString, con)
        finalResultDF.append(queryResultDF)
Run Code Online (Sandbox Code Playgroud)

如果没有循环传递值列表(即scoreDF.indexWHERE条件),是否可以以不同方式执行此操作?我用谷歌搜索了几个小时,有些人提到'参数',read_sql但我无法理解.

python mysql pandas

5
推荐指数
2
解决办法
5937
查看次数

具有“ where”条件限制的熊猫read_hdf?

我需要查询带有3个条件的子句的HDF5文件,where条件之一是长度为30的列表:

myList = list(xrange(30))

h5DF   = pd.read_hdf(h5Filename, 'df', where='index=myList & date=dateString & time=timeString')
Run Code Online (Sandbox Code Playgroud)

上面的查询给了我ValueError: too many inputs,错误是可重现的。

如果我将清单的长度减少到29(三个条件):

myList = list(xrange(29))

h5DF   = pd.read_hdf(h5Filename, 'df', where='index=myList & date=dateString & time=timeString')
Run Code Online (Sandbox Code Playgroud)

条件数只能为两个(列表长度为30):

然后执行正常:

myList = list(xrange(30))

h5DF   = pd.read_hdf(h5Filename, 'df', where='index=myList & time=timeString')
Run Code Online (Sandbox Code Playgroud)

这是已知限制吗?http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.pytables.read_hdf.html上的pandas文档没有提及此限制,在搜索此论坛后似乎没人遇到此限制。

版本是pandas 0.15.2。任何帮助表示赞赏。

python hdf5 pytables pandas

2
推荐指数
1
解决办法
2970
查看次数

标签 统计

pandas ×2

python ×2

hdf5 ×1

mysql ×1

pytables ×1