【问题标题】:Python - How to write data out to a new csv filePython - 如何将数据写入新的 csv 文件
【发布时间】:2016-02-10 13:02:08
【问题描述】:

好的,所以我对 Python 还很陌生,我有一个 .csv 文件,其中包含赛车手姓名、开始和结束时间的数据。我需要计算所花费的时间并将附加信息以及较早的数据输出到新的 .csv。

这是我目前所拥有的:

import csv
input_file = csv.DictReader(open("runners_times.csv"))
for row in input_file:
    time_taken = float(row["finish_time"])-float(row["start_time"])
    print (row)
    print (time_taken)

with open("runners_times_appended.csv", "w+") as to_file:
        writer = csv.writer(to_file, delimiter=",")
        for row in input_file:
            writer.writerows(all)

这正在创建新的 .csv,但文件为空。非常感谢您的帮助。

【问题讨论】:

  • 你试过用'wb'或'w'代替'w+'吗?
  • 我想你的意思是writer.writerow(row)
  • 谢谢。两者都试过了 - 仍然有一个空的 .csv...
  • writer.writerow(all) 中的all 是什么?另外,请编辑您的问题以反映 Kunkka 和 R Nar 的建议。
  • 谢谢 Austin A。请原谅我缺乏礼仪 - 这是我第一次在任何地方发帖,更不用说在这些受人尊敬的人中了。这也是我第一次尝试使用 Python 进行编程,所以我不太确定您所说的“编辑您的问题以反映来自 Kunkka 和 R Nar 的建议”是什么意思?当我使用术语 (all) 时,我这样做是因为我理解这将写入“所有”现有行?

标签: python csv append output


【解决方案1】:

我不完全了解您如何在要保存的文件中使用 time_taken。
据我了解,您需要使用 time_taken 在 dataFrame/csvFile 中添加/更改列。你可以用pandas 包来做到这一点:

import pandas as pd
df = pd.read_csv("runners_times.csv")
df["time_taken"] = df["finish_time"] - df["start_time"]
df.to_csv("new_name.csv")

【讨论】:

  • 非常感谢 Anton,但我的系统不喜欢 pandas:ImportError: No module named 'pandas'。会坚持下去:-)。
  • 你可以找到适用于 windows here 的二进制 pandas 包。只要找到pandas,然后下载一个轮子并用pip安装它。它对 dataFrame/csvFiles 处理非常有用。但是您还需要安装依赖项中的所有软件包,即Requires numpy, dateutil, pytz, setuptools
【解决方案2】:

试试这个:

import csv
data_list = []
input_file = csv.DictReader(open("runners_times.csv"))
for row in input_file:
    time_taken = float(row["finish_time"])-float(row["start_time"])
    row.update({"time_taken":time_taken})
    data_list.append(row)
keys = data_list[0].keys()
with open("runners_times_appended.csv", "w") as fp:
    dict_writer = csv.DictWriter(fp, keys)
    dict_writer.writeheader()
    dict_writer.writerows(data_list)

【讨论】:

  • 谢谢拉胡尔。尝试此编辑并收到此错误:>>> Traceback(最近一次调用最后一次):文件“C:\Users\lcswife\OneDrive\St Leonards\2015-16\Yr 11\The Big Race\The Big Race5.py” ,第 13 行,在 数据 = [row+[time_taken]] 中。类型错误:+ 的不支持的操作数类型:'dict' 和 'list' >>> 我可能注定要失败 ;-)
  • 感谢 Rahul - 但是,这解决了附加 time_taken 的问题。我仍然无法将输出输出到 csv 文件。感谢您的帮助。
  • 现在出现不同的错误? Traceback(最近一次通话最后一次):文件“X:/Documents/2015-16/11L/05 - Reading and Writing Files/The Big Race/The Big Race6.py”,第 13 行,在 dict_writer.writeheader( ) 文件“C:\Python33\lib\csv.py”,第 141 行,在 writeheader header = dict(zip(self.fieldnames, self.fieldnames)) TypeError: zip argument #1 must support iteration.
  • 更新了答案。我在获取密钥时错过了括号。再试一次,告诉我它是否有效。
猜你喜欢
  • 2015-01-21
  • 2021-09-26
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多