根据空列数

时间:2016-04-30 00:45:32

标签: python-2.7 pandas

我正在使用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'标签的同时找到一种阅读方式,它也可能有效。

谢谢!

1 个答案:

答案 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