Python数据框查询中包含空格的列名。

3

我想使用query来过滤数据框

ExcludeData= [1,3,4,5]
dfResult.query('Column A in @ExcludeData')

如何在查询中使用 A 列而不重命名它?

您不能:https://github.com/pandas-dev/pandas/issues/6508#issuecomment-283181667 - ayhan
3个回答

6

从Pandas v.0.25开始,如果在查询中使用反引号将带有空格的列名括起来,则可以引用这些列。

使用Pandas 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')

2

我不会使用query函数,而是会使用方括号表示法:

dfResult = dfResult[dfResult['Column A'].isin(ExcludeData)]

我最终使用了 Isin。 - ProgSky

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接