熊猫列访问,列名包含空格
- 2025-02-27 09:07:00
- admin 原创
- 58
问题描述:
如果我导入或创建一个不包含空格的 pandas 列,我可以按如下方式访问它:
from pandas import DataFrame
df1 = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
'data1': range(7)})
df1.data1
这将返回该系列。但是,如果该列的名称中有空格,则无法通过该方法访问:
from pandas import DataFrame
df2 = DataFrame({'key': ['a','b','d'],
'data 2': range(3)})
df2.data 2 # <--- not the droid I'm looking for.
我知道我可以使用.xs() 访问它:
df2.xs('data 2', axis=1)
肯定还有其他方法。我疯狂地在 Google 上搜索,想不出其他方法。我读完了 SO 上包含“column”和“string”以及“pandas”的所有 96 个条目,但找不到以前的答案。这是唯一的方法吗,还是有更好的方法?
解决方案 1:
旧帖子,但可能很有趣:一个想法(具有破坏性,但如果你想快速而肮脏地完成工作)是使用下划线重命名列:
df1.columns = [c.replace(' ', '_') for c in df1.columns]
解决方案 2:
我认为默认方法是使用括号方法而不是点符号。
import pandas as pd
df1 = pd.DataFrame({
'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
'dat a1': range(7)
})
df1['dat a1']
其他方法,例如将其作为属性公开,更是为了方便。
解决方案 3:
如果您喜欢向 pandas 方法(如assign)提供间隔列名称,您可以对您的输入进行字典化。
df.assign(**{'space column': (lambda x: x['space column2'])})
解决方案 4:
你可以这样做df['Column Name']
解决方案 5:
虽然在使用字典或 [] 选择时,接受的答案适用于列指定,但它不能推广到需要引用列的其他情况,例如assign
方法:
> df.assign("data 2" = lambda x: x.sum(axis=1)
SyntaxError: keyword can't be an expression
解决方案 6:
如果要应用过滤,列名中包含空格也是可能的,例如过滤 NULL 值或空字符串:
df_package[(df_package['Country_Region Code'].notnull()) |
(df_package['Country_Region Code'] != u'')]
正如我所发现的,感谢Rutger Kassies 的 回答。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD