解析不一致的数据时,“发现”标题行的最佳方法是什么?

时间:2019-12-11 03:15:30

标签: python pandas

我有一个非常糟糕的客户端,该客户端似乎无法始终如一地格式化它们发送来输入的excel文件。

不幸的是,他们也支付得很好,所以我拒绝该数据的请求充耳不闻。

问题:

每周,我们都会收到一个excel文件。一张是我们想要的。在某些行,它开始是可用表。根据客户的感受,可能是第2行或第920行。我已经编写了格式化后的熊猫代码。这是我要工作的,但我非常讨厌它:

IDENTIFER = 'nunya_business'
SHEETNAME = 'nunya_business_2'
CSVNAME = 'nunya_business_3'
FILENAME = 'nunya_business_4'

df = pd.read_excel(FILENAME, SHEETNAME)
df.to_csv(CSVNAME, index=False)

list_of_data = []

with open(CSVNAME) as openfile:
    reader = csv.reader(openfile)
    good_to_go = False
    for row in reader:
        if row[0] == IDENTIFIER:
            good_to_go = True
        if not good_to_go:
            continue
        list_of_data.append(row)

df = pd.DataFrame(list_of_data)
my_actual_func(df)

我不介意编写冗长的代码,但感觉很烦。有什么聪明的方法吗?

1 个答案:

答案 0 :(得分:2)

使用itertools.dropwhile可以将构建list_of_data的代码简化为(未经测试的):

from itertools import dropwhile

...

with open(CSVNAME) as openfile:
    list_of_data = list(dropwhile(lambda row: row[0] != IDENTIFIER, csv.reader(openfile)))