Pandas列访问w /列名称包含空格

Bra*_*air 34 string pandas

如果我导入或创建一个不包含空格的pandas列,我可以这样访问它:

df1 = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
                 'data1': range(7)})

df1.data1
Run Code Online (Sandbox Code Playgroud)

这将为我返回该系列.但是,如果该列的名称中有空格,则无法通过该方法访问该列:

df2 = DataFrame({'key': ['a','b','d'],
                 'data 2': range(3)})

df2.data 2      # <--- not the droid i'm looking for.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用.xs()访问它:

df2.xs('data 2', axis=1)
Run Code Online (Sandbox Code Playgroud)

还有的是另一种方式.我用谷歌搜索它疯了,想不出任何其他方式谷歌它.我在这里阅读了包含"column","string"和"pandas"的所有96条目,并且找不到以前的答案.这是唯一的方法,还是有更好的东西?

谢谢!

Aki*_*oss 38

旧帖子,但可能很有趣:一个想法(这是破坏性的,但如果你想要快速和肮脏的工作)是使用下划线重命名列:

df1.columns = [c.replace(' ', '_') for c in df1.columns]
Run Code Online (Sandbox Code Playgroud)

  • 如果要将列标准化为小写,请在df1.columns中使用`df1.columns = [c.lower().replace('','_')作为c. (6认同)
  • 另一种方法是使用 `strip()` 函数:`df1.columns = [c.strip() for c in df1.columns]` (2认同)

Rut*_*ies 28

我认为默认的方法是使用:

df1 = pandas.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
             'dat a1': range(7)})

df1['dat a1']
Run Code Online (Sandbox Code Playgroud)

其他方法,比如将其作为属性公开,更方便.


小智 5

如果您想为 pandas 方法提供间隔的列名称,例如assign,您可以将您的输入字典化。

df.assign(**{'space column': (lambda x: x['space column2'])})
Run Code Online (Sandbox Code Playgroud)