2015-10-20 64 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]