2017-06-13 208 views
1

我已經使用pandas從Basketball Reference導入了一個HTML表格,但我遇到了一個煩惱,試圖重命名一些空字符串用於名稱的列。如果名稱爲空字符串,如何重命名Pandas DataFrame列?

下面的代碼來拉桌子:

tables = pd.read_html('http://www.basketball-reference.com/leagues/NBA_2016_games.html') 
games = tables[0] 

列是這樣的:

Out[138]: 

Index([u'Date', u'Start (ET)', u'Visitor/Neutral', u'PTS', u'Home/Neutral', 
     u'PTS.1', u' ', u' .1', u'Notes'], 
     dtype='object') 

重命名一切除了u' 'u' .1'列是沒有問題,但我找不到正確的方法來使用標籤方法重新命名空的。

我默認想這(僅限於這裏改名幾列):

column_names = {'Date': 'date', ' ': 'box', ' .1': 'overtime'} 
games.rename(columns = column_names) 

但這離開' '' .1'列不變。

此方法效果:

column_names = {games.columns[6]: 'box', games.columns[7]: 'overtime'} 

但是有什麼辦法改變這些名稱不明確引用的位置?

回答

0

對我的作品添加str.strip爲刪除尾隨空格,也需要改變dict值(刪除空格):

column_names = {'Date': 'date', '': 'box', '.1': 'overtime'} 
games.columns = games.columns.str.strip() 
games = games.rename(columns = column_names) 
print (games.columns) 
Index(['date', 'Start (ET)', 'Visitor/Neutral', 'PTS', 'Home/Neutral', 'PTS.1', 
     'box', 'overtime', 'Notes'], 
     dtype='object') 

另一種解決方案是出口列名list且有\xaNO-BREAK SPACE):

print (games.columns.tolist()) 
['Date', 'Start (ET)', 'Visitor/Neutral', 'PTS', 'Home/Neutral', 
'PTS.1', '\xa0', '\xa0.1', 'Notes'] 


column_names = {'Date': 'date', '\xa0': 'box', '\xa0.1': 'overtime'} 
games = games.rename(columns = column_names) 
print (games.columns) 
Index(['date', 'Start (ET)', 'Visitor/Neutral', 'PTS', 'Home/Neutral', 'PTS.1', 
     'box', 'overtime', 'Notes'], 
     dtype='object') 
+0

這是行不通的,比你呢! 直觀地說,是否有一個原因,爲什麼'strip()'會工作,並允許使用''''重命名,而在原始代碼中使用''''不起作用? – MichaelWalker

+0

沒有空格,但是[NO-BREAK SPACE](https://stackoverflow.com/a/26069208/2901002)。但它也可以被刪除。 – jezrael

+0

有道理,我看到編輯/添加轉換爲列表以查看unicode - 很高興知道,再次感謝您! – MichaelWalker

0

也許這可能是一個快速修復 - 明確設置列名稱。

df.columns = [u'Date', u'Start (ET)', u'Visitor/Neutral', u'PTS', u'Home/Neutral', u'PTS.1', u'Rename1', u'Rename2', u'Notes']

相關問題