假设我创建了一个带有列和查询的数据框,即
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)
由于查询正在开发中,一个可能的解决方案是创建一个用于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)
这是一个简单的技巧,并不适合所有情况,当查询问题得到解决时,答案将更新。
归档时间: |
|
查看次数: |
2692 次 |
最近记录: |