2017-09-04 161 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, :]