[英]write to multiple files line by line
我有一個 dataframe 示例
first second
1 3
2 4
5 6
我正在逐行迭代 dataframe 執行減法和加法。 我想將輸出分別逐行寫入新的 csv 文件。 我不確定如何直接寫入多個 csv 文件。
對於單個文件,我使用類似
with open(subtract_output_file, "w") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in df.iterrows():
a = row[1][0]
b = row[1][1]
writer.writerow(a-b)
我想同時將加法 output 寫入另一個文件,因為我不想兩次讀取輸入。
您可以通過執行以下操作一次打開多個文件:
with open(output_file_1, 'w') as f1, open(output_file_2, 'w') as f2:
do_something()
因此,對於您的代碼,它將類似於...
with open(subtract_output_file, "w") as csvsub, open(addition_output_file, 'w') as csvadd:
writersub = csv.DictWriter(csvsub, fieldnames=fieldnames)
writeradd = csv.DictWriter(csvadd, fieldnames=fieldnames)
writersub.writeheader()
writeradd.writeheader()
for row in df.iterrows():
a = row[1][0]
b = row[1][1]
writersub.writerow(a-b)
writeradd.writerow(a+b)
這可能不是最有效的方法,但應該可以。
為什么使用pandas而不利用它的優勢? 總共四個明確的命令:
plus = df["first"] + df["second"]
minus = df["first"] - df["second"]
plus .to_csv("addition_output_file", header=["plus"], index=False)
minus.to_csv("subtract_output_file", header=["minus"], index=False)
矢量化+
和-
操作比你的for
循環快得多。
該系列的.to_csv()
方法完成所有“臟”工作。
無需同時逐行寫入——無需兩次讀取輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.