我想使用query
过滤数据框ExcludeData= [1,3,4,5]
dfResult.query('Column A in @ExcludeData')
如何在不重命名的情况下在查询中使用A列?
答案 0 :(得分:2)
我不会使用查询功能。我会使用方括号表示法:
dfResult = dfResult[dfResult['Column A'].isin(ExcludeData)]
答案 1 :(得分:1)
正如@ayhan指出的那样,它现在不受支持。但是,您可以确保无空间地阅读列。
In [51]: df
Out[51]:
A B
0 1 2
1 3 5
2 4 8
3 5 5
4 4 4
5 5 2
6 9 8
7 8 9
8 4 6
9 2 3
In [52]: df.columns
Out[52]: Index([u' A', u'B'], dtype='object')
In [53]: pd.read_csv(pd.io.common.StringIO(df.to_csv(index=False)),sep='\s*,').query('A in [2,3]')
Out[53]:
A B
1 3 5
9 2 3
答案 2 :(得分:1)
从Pandas 0.25版开始,如果您将列名括在查询中的反引号中,则可以引用名称包含空格的列。
使用熊猫0.25.2:
>>> df = pd.DataFrame({'a a': [1, 0], 'b b': [1, 1]})
>>> df
a a b b
0 1 1
1 0 1
>>> df.query('`a a`==`b b`')
a a b b
0 1 1
来自API文档:https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.query.html
在您的情况下,用法为:
dfResult.query('`Column A` in @ExcludeData')