2017-09-04 138 views
0

感谢read_excel选择行StackOverflow的(所以基本上所有的你)我已经成功地解决了几乎所有我的关于阅读的问题Excel数据数据帧,除了一个...我的代码是这样的:大熊猫

df = pd.read_excel(
    fileName, 
    sheetname=sheetName, 
    header=None, 
    skiprows=3, 
    index_col=None, 
    skip_footer=0, 
    parse_cols='A:J,AB:CC,CE:DJ', 
    na_values='') 

问题是,在我解析最后一行数据的excel文件中,我想要加载的是每次都在不同的位置。唯一能识别我感兴趣的最后一行数据的方法是在每张表的第一列中查找单词“SUMA”,并且我想要加载到df的最后一行将是包含“SUMA”的行的n-1行”。在SUMA下面的行也有一些不可信的(对我来说)信息,并且可以有很多这样的信息,所以我想避免加载它们。

回答

0

如果你用发电机做,你可以做这样的事情。这加载完整的DataFrame,但后来过滤掉'SUMA'后的行,使用True == 1的技巧,所以你只保留相关信息。之后您可能需要一些工作才能获得正确的分型

def read_files(files): 
    sheetname = 'my_sheet' 
    for file in files: 
     yield pd.read_excel(
      file, 
      sheetname=sheetName, 
      header=None, 
      skiprows=3, 
      index_col=None, 
      skip_footer=0, 
      parse_cols='A:J,AB:CC,CE:DJ', 
      na_values='') 

def clean_files(dataframes): 
    summary_text = 'SUMA' 
    for df in dataframes: 
     index_after_suma = df.index.str.startswith(summary_text).cumsum() 
     yield df.loc[~index_after_suma, :]