簡體   English   中英

逐行寫入多個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM