【问题标题】:Adding new column with the header containing date at the beginning of CSV file在 CSV 文件的开头添加标题包含日期的新列
【发布时间】:2020-01-03 10:47:10
【问题描述】:

我在 Stackoverflow 上寻找这个东西,但我没有找到我想要的东西。我想在 Python 上打开 csv 文件并添加带有标题“日期”的新列,直到文件末尾添加今天的日期。我该怎么做?我试图用熊猫来做,但我只知道如何附加到最后。

我试图用包 csv 做到这一点:

x=open(outfile_name1)
y=csv.reader(x)
z=[]
for row in y:
    z.append(['0'] + row)

我想输入今天的日期,而不是 ['0']。然后我可以使用熊猫或其他东西将此列表转换为 csv 吗?提前感谢您的帮助!

【问题讨论】:

  • 阅读pandas docs
  • 为什么需要临时列表?不能一个只打开文件进行读取,另一个打开文件进行写入,按行读取并在前面写入日期。

标签: python pandas csv


【解决方案1】:

试试这个:

import pandas as pd
import datetime

df = pd.read_csv("my.csv")
df.insert(0, 'Date', datetime.datetime.today().strftime('%Y-%m-%d'))
df.to_csv("my_withDate.csv", index=False)

PS:Read the docs

【讨论】:

  • 谢谢!这正是我想要的。
【解决方案2】:

这是你要找的吗?

import pandas as pd
import datetime

df = pd.read_csv("file.csv")
df['Date'] = datetime.datetime.today().strftime('%Y-%m-%d')
df.to_csv("new_file.csv", index=False)

【讨论】:

  • 会加在文件开头吗? ;)
  • 它将创建一个新列“日期”,每行都有今天的日期。列的长度将等于 csv 文件中现有的行数。
  • 您必须将新数据框保存到 csv 文件中。我现在添加了那行。
  • 这不会将列添加到文件的开头!
  • 执行以下操作:df = df[['a', 'b', 'c']] 根据您的喜好重新排列它们。
【解决方案3】:

据我所知,最终目标是将数据写入 csv。这样做的一个选择是打开第一个文件以读取数据,第二个用于写入数据,然后将标题行写入新文件,并在其前面加上列名“日期”,然后迭代数据行,并在它们前面加上日期(需要 3.6

import datetime

with open('columns.csv', 'r') as out, open('out.csv', 'w') as into:
    headers = 'Date,' + next(out)
    print(headers, end='', file=into)
    for row in out:
        print(f'{datetime.datetime.today().date()}, {row}', end='', file=into)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多