我正在使用pandas.read_html从互联网上解析几个表。信息来自此类http://www.sports-reference.com/cfb/players/william-fuller-2/gamelog/这样的网页。这为我提供了如下所示的数据框,我将其缩写为节省空间:
Passing Rushing tackles Rk Year
1 2 Nan Nan Nan
2 3 Nan Nan Nan
3 3 Nan Nan Nan
4 5 Nan Nan Nan
发生这种情况的原因是每个表都有主要和次要标题,read_html将两者作为列名称,因此与分组标题有相同数量的额外列。我想将剩下的所有列名都移动到完全Nan列的数量,这样我的df就变成了
Rk Year
1 2
2 3
3 3
4 5
要清楚,每个表的完全NaN列的数量会发生变化,所以我不能只在一定长度的位移中进行硬编码。
有没有一种简单的方法可以做到这一点?
如果我在跳过over_header'tr'标签的同时找到一种阅读方式,它也可能有效。
谢谢!
答案 0 :(得分:2)
有很多方法可以解决这个问题,但我实现了如下所示的列计数稳健性。
import pandas as pd
df = pd.read_csv('your_data.csv')
to_shift = len(df.dropna(how='all', axis=1).columns)
df2 = df.dropna(how='all', axis=1)
df2.columns = df.columns[-to_shift:]
print df2
Rk Year
0 1 2
1 2 3
2 3 3
3 4 5