pandas read_excel选择行

时间:2017-09-04 13:55:27

标签: python excel pandas dataframe

感谢StackOverflow(所以基本上所有人)我已经设法解决了几乎所有关于将Excel数据读取到DataFrame的问题,除了一个...我的代码是这样的:

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下面的行也有一些不完整的(对我而言)信息,并且可以有相当多的信息,所以我想避免加载它们。

1 个答案:

答案 0 :(得分:0)

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

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, :]