根据这个帖子: SO: Column names to list
将列名转换为列表应该很简单。但如果我这样做:
df.columns.tolist()
我明白了:
[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
我知道,我可以摆脱你和' 。但我想在没有任何黑客的情况下获得干净的名字作为列表。这可能吗?
答案 0 :(得分:16)
或者,您可以尝试:
df2 = df.columns.get_values()
会给你:
array(['q_igg', 'q_hcp', 'c_igg', 'c_hcp'], dtype=object)
然后:
df2.tolist()
给你:
['q_igg', 'q_hcp', 'c_igg']
答案 1 :(得分:2)
列表[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
包含Unicode字符串:u
表示它们是Unicode字符串,'
包含在每个字符串周围。您现在可以在代码中以任何方式使用这些名称。有关Python 2.x中Unicode字符串的更多详细信息,请参阅Unicode HOWTO。
答案 2 :(得分:1)
如果您只对打印名称而不使用引号或unicode指标感兴趣,可以执行以下操作:
In [19]: print "[" + ", ".join(df) + "]"
[q_igg, q_hcp, c_igg, c_hcp]
答案 3 :(得分:1)
如前所述,u表示其unicode已转换。无论如何,最干净的方法是将colnames转换为ascii或类似的东西。
In [4]: cols
Out[4]: [u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
In [5]: [i.encode('ascii', 'ignore') for i in cols]
Out[5]: ['q_igg', 'q_hcp', 'c_igg', 'c_hcp'
这里的问题是您将丢失未在ascii中编码的特殊字符。
更脏的解决方案是获取列表对象的字符串表示并只替换u。我不会使用它,但在这种特殊情况下它可能适合你的需要; - )
In [7]: repr(cols)
Out[7]: "[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']"
In [11]: x.replace("u", "")
Out[11]: "['q_igg', 'q_hcp', 'c_igg', 'c_hcp']"
答案 4 :(得分:0)
简单方法: df-dataframe变量名称
df.columns.to_list()
这将给出所有列名称的列表。
答案 5 :(得分:0)
这将完成工作
list(df2)