【问题标题】:How to Reference a Pandas Column that has a dot in the name如何引用名称中带有点的 Pandas 列
【发布时间】:2019-12-04 12:54:28
【问题描述】:

我在 Python Pandas 中工作,其数据框的列名前面带有 Content.。我可以通过声明df['Content.xyz'] 来访问给定的列。但是,当我尝试对其执行查询时,例如df.query("Content.xyz not in @mylist"),它会抛出 Content 不是数据框成员的错误。

如何在名称前加句点的情况下执行查询或其他类似操作?

此外,某些系列名称中包含空格。我假设带有句点的列名的解决方案类似于包含空格的名称的解决方案。

【问题讨论】:

标签: python pandas


【解决方案1】:

来自.query() docs

0.25.0 版中的新功能。

您可以通过用反引号括起来来引用包含空格的列名。

例如,如果您的某一列名为a a,并且您想将其与b 相加,则您的查询应为 `a a` + b

这样就回答了您问题的第二部分;您可以在列名周围使用反引号来转义其名称中的空格。

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

【讨论】:

  • 截至 2021 年(pandas v1.3),使用反引号引用您的列也适用于点。
【解决方案2】:

您不能使用df.Content.xyz 表示法访问该列。您只能使用 df['Content.xyz'] 引用列

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

0    1
1    2

【讨论】:

  • 这个问题具体是关于.query()
【解决方案3】:

使用替换命令删除攻击性字符可以正常工作:Removing space from dataframe columns in pandas

【讨论】:

  • 这只是一种解决方法,不再是合适的解决方案,考虑到上面@jorijnsmit 提供的反引号(`)解决方案
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
相关资源
最近更新 更多