2015-10-20 68 views
1

我有一個來自Excel導入熊貓據幀:如何重命名大熊貓數據框使用Unicode字符

Trade Symbol Type Signal Date Price Contracts Profit (¤) Run-up (¤) Drawdown (¤) 
0 1 FOXA EntryLong Buy 2000-10-18 34.69 200 0 0 0 
1 NaN NaN ExitLong Sell 2000-10-18 34.69 200 NaN NaN NaN 
2 2 TXN EntryLong Buy 2000-10-18 36.88 200 1774 1900 0 
3 NaN NaN ExitLong Sell 2000-10-19 45.75 200 NaN NaN NaN 

我需要重命名「利潤(¤)」,以「利潤」,但無法擺脫的「¤的「 標誌。

我使用:

trades.rename(columns={'Trade #':'Trade','Symbol Name':'Symbol','Profit (¤)':'Profit','Run-up (¤)':'Runup','Drawdown (¤)':'Drawdown'}, inplace=True) 

不工作。

list(trades) 

得到:

['Trade', 
'Symbol', 
u'Type', 
u'Signal', 
u'Date', 
u'Price', 
u'Contracts', 
u'Profit (\xa4)', 
u'Run-up (\xa4)', 
u'Drawdown (\xa4)'] 

任何提示如何使用特殊字符的colums重新命名? 謝謝。

+0

因此'trades.rename(columns = {'Profit(\ xa4)':'Profit'},inplace = True)'工作嗎? – EdChum

+1

作爲一個旁觀,你正在做的是刪除額外的奇怪的字符,你可以做'trades.columns = trades.columns.str.split()。str [0]' – EdChum

+0

trades.rename(columns = {'利潤(\ xa4)':'利潤'},inplace = True)不起作用。我得到錯誤「UnicodeEncodeError:'ascii'編解碼器無法編碼字符u'\ xa4'在位置72:序號不在範圍內(128)」 – PeterL

回答

1

它看起來像你正在做的僅僅是刪除錯誤的額外字符,因爲它是由一個空間,您可以通過splitting上的空間只是簡單地覆蓋列名分隔:

In [104]: 
df = pd.DataFrame(columns=['Trade', 
'Symbol', 
u'Type', 
u'Signal', 
u'Date', 
u'Price', 
u'Contracts', 
u'Profit (\xa4)', 
u'Run-up (\xa4)', 
u'Drawdown (\xa4)']) 
df 

Out[104]: 
Empty DataFrame 
Columns: [Trade, Symbol, Type, Signal, Date, Price, Contracts, Profit (¤), Run-up (¤), Drawdown (¤)] 
Index: [] 

In [105]: 
df.columns.str.split().str[0] 

Out[105]: 
Index(['Trade', 'Symbol', 'Type', 'Signal', 'Date', 'Price', 'Contracts', 
     'Profit', 'Run-up', 'Drawdown'], 
     dtype='object') 

所以下面應該爲你工作:

trades.columns = trades.columns.str.split().str[0]