我已经使用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'
列保持不变。
此方法有效:
column_names = {games.columns[6]: 'box', games.columns[7]: 'overtime'}
但是有没有办法在没有明确引用位置的情况下更改这些名称?
答案 0 :(得分: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']
答案 1 :(得分: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
,并且\xa
(NO-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')