簡體   English   中英

如果名稱是空字符串,如何重命名Pandas DataFrame列?

[英]How to rename a Pandas DataFrame column if the name is an empty string?

我使用pandas從Basketball Reference導入了一個HTML表格,但是我正在努力重命名幾個列為空名字符串的列。

這是拉表的代碼:

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'' .1'列保持不變。

此方法有效:

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

但有沒有辦法在沒有明確引用位置的情況下更改這些名稱?

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

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

對我來說,工程添加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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM