我有一个非常糟糕的客户端,该客户端似乎无法始终如一地格式化它们发送来输入的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)
我不介意编写冗长的代码,但感觉很烦。有什么聪明的方法吗?
答案 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)))