【问题标题】:write csv as output instead of print将CSV写为输出而不是打印
【发布时间】:2021-12-11 17:04:48
【问题描述】:

我提出了一个 API 请求并在循环中打印了一个 DataFrame。

现在我想代替打印,直接将输出写入 csv。 我在网上寻找答案,但不明白。非常感谢您的帮助!

这是我的循环:

for company in eic_listing:
    for facility in company["facilities"]:
        if "df" in facility:
            print(company["name"], facility["name"])
            print(
                facility["df"]["status"],
                facility["df"]["gasDayStartedOn"],
                facility["df"]["gasInStorage"],
                facility["df"]["full"],
                facility["df"]["withdrawal"]
            )```

【问题讨论】:

标签: python write


【解决方案1】:

在性能方面,循环遍历数据框是一个糟糕的想法。如果你真的想这样做,你可以使用 csv 模块将输出格式化为 csv:

import csv
...
wr = csv.writer(sys.stdout)  # or use a Python file object here...
for company in eic_listing:
    for facility in company["facilities"]:
        if "df" in facility:
            wr.writerow(company["name"], facility["name"],
                facility["df"]["status"],
                facility["df"]["gasDayStartedOn"],
                facility["df"]["gasInStorage"],
                facility["df"]["full"],
                facility["df"]["withdrawal"]
            )

【讨论】:

  • 谢谢,这很有帮助!你能提示一个更好的方法吗?
  • @NoelHarris:不,我不能,至少在不知道什么是 eic_listingcompanyfacility...
【解决方案2】:

Pandas 确实有一个“to_csv”方法。也许这会对你有所帮助:pandas.DataFrame.to_csv

【讨论】:

  • 我知道,谢谢,我的问题是,如何将它集成到打印输出中而不是打印出来?
【解决方案3】:

尝试将您的打印行替换为:

df.to_csv('out.csv')  

【讨论】:

  • 不,我在问,如何将它集成到循环中,而不是打印它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2014-07-22
  • 2011-04-26
  • 2016-09-06
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多