如何引用名称中带有点的Pandas列

13 人关注

我在Python Pandas中使用一个数据框架,该数据框架的列名前缀为 Content. 。 我可以通过说明 df['Content.xyz'] 来访问一个特定的列。 然而,当我试图对它进行查询时,例如 df.query("Content.xyz not in @mylist") ,它会抛出一个错误: Content 不是数据框架的成员。

如何在名称中预留句号的情况下进行查询或其他类似操作?

另外,有些系列名称中含有空格。 我想,带有句号的列名的解决方案与含有空格的名称的解决方案类似。

2 个评论
Have you tried Content\.xyz ?
python
pandas
Michael James
Michael James
发布于 2019-12-04
3 个回答
gosuto
gosuto
发布于 2019-12-04
已采纳
0 人赞同

From the .query() docs :

New in version 0.25.0.

你可以通过用反斜线环绕来引用含有空格的列名。

例如,如果你的一个列被称为 a a ,你想与 b 相加,你的查询应该是 `a a` + b

因此,这就回答了你问题的第二部分;你可以在列名周围使用反斜线,以转义其名称中的白位。

不幸的是,现在这只适用于空格,还不能用于点或其他特殊字符。目前这是一个公开的问题,正在努力解决( https://github.com/pandas-dev/pandas/issues/27017 ),可能很快就会在下一个版本中修复。

从2021年(pandas v1.3)起,使用回车键来引用你的列,对点也是如此。
Brandon
Brandon
发布于 2019-12-04
0 人赞同

你不能使用 df.Content.xyz 的符号来访问该列。你只能使用 df['Content.xyz'] 来引用列。

df = pd.DataFrame([1,2], columns = ['Content.xyz'])
print(df['Content.xyz'])