如何在 Pandas 中查询数字列名?

Flo*_*oor 8 python pandas

假设我创建了一个带有列和查询的数据框,即

pd.DataFrame([[1,2],[3,4],[5,6]],columns=['a','b']).query('a>1')
Run Code Online (Sandbox Code Playgroud)

这会给我

   a  b
1  3  4
2  5  6
Run Code Online (Sandbox Code Playgroud)

但是当数据框值太大而我没有列名时,如何通过索引查询列?

我尝试通过传递一个数字来查询,但这不是这样做的方式。

pd.DataFrame([[1,2],[3,4],[5,6]]).query('0>1') # This is what I tried. 
Run Code Online (Sandbox Code Playgroud)

如何表示0查询中的列名?

预期输出:

   0  1
1  3  4
2  5  6
Run Code Online (Sandbox Code Playgroud)

Flo*_*oor 7

由于查询正在开发中,一个可能的解决方案是创建一个用于pd.DataFrame评估 self的猴子补丁,即:

def query_cols(self,expr):
    if 'self' in expr:
        return self[eval(expr)]
    else:
        return self.query(expr)

pd.DataFrame.query_cols = query_cols

pd.DataFrame([[1,2],[3,4],[5,6]]).query_cols('self[1] > 3')

   0  1
1  3  4
2  5  6

pd.DataFrame([[1,2],[3,4],[5,6]]).query_cols('self[1] == 4')

   0  1
1  3  4

pd.DataFrame([[1,2],[3,4],[5,6]],columns=['a','b']).query_cols('a > 3')

   a  b
2  5  6
Run Code Online (Sandbox Code Playgroud)

这是一个简单的技巧,并不适合所有情况,当查询问题得到解决时,答案将更新。

  • 有趣的方法;) (2认同)