2016-04-30 149 views
2

我使用pandas.read_html从互联网解析了几个表。信息来自这样的页面http://www.sports-reference.com/cfb/players/william-fuller-2/gamelog/。这为我提供了类似下面dataframes,我已经缩写为节省空间:根据空列数转换熊猫列

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既需要作为列名,因此有与分组标题相同数量的额外列。我想所有的完全楠列数左边的列名转移,让自己的DF成为

Rk  Year 
1   2 
2   3   
3   3    
4   5   

需要明确的是,对每个表完全NaN的列更改的数量,这样我就可以不只是硬编码在一定长度的转变。

有没有一种简单的方法,我可以做到这一点?

如果我在跳过over_header'tr'标签的同时找到表格中的阅读方式,它也可能工作。

谢谢!

回答

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 
+0

非常感谢你!我认为它会以某种方式包含dropna,但之后在列索引上挣扎! –