我在Python Pandas中使用一个数据框,该数据框的列名以Content.
开头。我可以通过声明df['Content.xyz']
来访问给定的列。但是,当我尝试对其执行查询时,例如df.query("Content.xyz not in @mylist")
,它会引发一个错误,指出Content
不是数据框的成员。
如何在名称中加句号的情况下执行查询或其他类似操作?
此外,某些系列名称中也包含空格。我假设带有句点的列名称的解决方案类似于包含空格的名称的解决方案。
答案 0 :(得分:2)
您不能使用select p.*
from phone_numbers p
left join orders o
on o.phone_number_id = p.phone_number_id
and :start_date + interval 7 day <= o.end_date
and :end_date >= o.start_date + interval 7 day
where o.phone_number_id is null
表示法访问该列。您只能使用df.Content.xyz
df['Content.xyz']
答案 1 :(得分:1)
0.25.0版中的新功能。
您可以通过在反引号中将空格括起来来引用包含空格的列名。
例如,如果您的一列称为
a a
,而您想将其与b
相加,则查询应为`a a` + b
。
这样可以回答您问题的第二部分;您可以在列名称周围使用反引号来转义其名称中的空格。
不幸的是,这仅适用于当前的空格,不适用于点或其他特殊字符。目前,这是一个尚待解决的公开问题(https://github.com/pandas-dev/pandas/issues/27017),可能很快就会在下一个版本中得到解决。
答案 2 :(得分:0)
使用replace命令删除令人反感的角色可以正常工作:Removing space from dataframe columns in pandas。