我正在将数据解析成列表,并使用pandas进行框架化并写入CSV文件。首先,我的数据被带入一个集合中,其中inv、name和date都是具有许多条目的列表。然后,我使用concat将我遍历过的每个数据集的迭代连接到CSV文件中,如下所示:
counter = True
data = {'Invention': inv, 'Inventor': name, 'Date': date}
if counter is True:
df = pd.DataFrame(data)
df = df[['Invetion', 'Inventor', 'Date']]
else:
df = pd.concat([df, pd.DataFrame(data)])
df = df[['Invention', 'Inventor', 'Date']]
with open('./new.csv', 'a', encoding = utf-8) as f:
if counter is True:
df.to_csv(f, index = False, header = True)
else:
df.to_csv(f, index = False, header = False)
counter = False
计数器 = True 的语句位于我的迭代循环之外,用于解析所有数据,因此它不会每次都被覆盖。
这意味着它仅通过我的数据运行一次,以抓取第一个 df 集合,然后在其后连接。问题在于,即使计数器仅为 True 一次并且对于 df 的第一个 if 语句有效,但它对于我的写入文件却无效。
问题是标题总是一遍又一遍地被写入,而与计数器只为 True 一次的事实无关。 当我将 header = False 与计数器为 True 时交换,则永远不会写入标题。
我认为这是由于 df 的连接方式某种程度上保留了标题,但除此之外我无法找出逻辑错误。
也许还有其他方法可以将标题写入同一 CSV 文件,只写入一次吗?