根據這個線索: SO: Column names to list大熊貓列名列出
它應該很容易做到的列名轉換到一個列表。但是,如果我這樣做:
df.columns.tolist()
我得到:
[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
我知道,我可以擺脫u和'的。但我想只是將清單名稱列爲清單,而沒有任何黑客入侵。那可能嗎 ?
根據這個線索: SO: Column names to list大熊貓列名列出
它應該很容易做到的列名轉換到一個列表。但是,如果我這樣做:
df.columns.tolist()
我得到:
[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
我知道,我可以擺脫u和'的。但我想只是將清單名稱列爲清單,而沒有任何黑客入侵。那可能嗎 ?
或者,你可以嘗試:
df2 = df.columns.get_values()
,這將給你:
array(['q_igg', 'q_hcp', 'c_igg', 'c_hcp'], dtype=object)
則:
df2.tolist()
它給你:
['q_igg', 'q_hcp', 'c_igg']
列表[u'q_igg', u'q_hcp', u'c_igg', u'c_hcp']
包含Unicode字符串:u
表示它們是Unicode字符串,而'
是圍繞每個字符串。您現在可以在代碼中以任何方式使用這些名稱。有關Python 2.x中Unicode字符串的更多詳細信息,請參見Unicode HOWTO。
如果你在打印的名稱沒有引號或Unicode指標有興趣,你可以做這樣的事情:
In [19]: print "[" + ", ".join(df) + "]"
[q_igg, q_hcp, c_igg, c_hcp]
前面已經提到的U意味着它的Unicode轉換。無論如何,最簡潔的方法是將名稱轉換爲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。我不會使用,但它可能在BEFIT這種特殊情況下;-)您的需求
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']"
代表@AsheKetchum沒有足夠的代表評論:'.replace'的不利之處在於,如果您的原始變量名稱中包含u,它可能會替換'** u **'。例如''u'q_ugg'「'會變成''''q_gg'」' – 2017-02-16 20:52:47
這是正確的,它只是表明該字符串是Unicode字符串。 – 2014-11-25 14:23:15