繁体   English   中英

如何在python中将数据列表写入.csv文件?

[英]How to write lists of data to a .csv file in python?

我正在尝试将信息列表写入python中的.csv文件。 到目前为止,我只能打印标题。 我想从现有的.csv文件中抓取2列,以将数据写入新的.csv文件中。 到目前为止,我有

def get_id_size():
    read_file = pandas.read_csv('poem_info.csv')
    poemid = (read_file[['poemname']])
    poemsize = (read_file[['poemsize']])
    return (poemid, poemsize) #this is the columns i want in my new.csv file

    with open('poem_data.csv', 'w') as outfile:
        # write header
        outfile.write('poemid,poemsize,cli,ari\n')

我的新数据在

        cli = calculate_cli
        ari = calculate_ari

所以我的问题是:如何将poemid,poemsize,cli和ari分配给csv文件? 我是python的新手,无法弄清楚这样做的语法

好吧,我不是pandas专家,但是您在这里并不需要它:

import csv

with open('poem.csv', newline='') as inf,
     open('poem_data.csv', 'w', newline='') as outf:
    csvout = csv.writer(outf)
    csvout.writerow(['poemid', 'poemsize', 'cli', 'ari'])
    for (poemid, size, *_), c, a in zip(csv.reader(inf), cli, ari):
        csvout.writerow([poemid, size, c, a])

从输入文件中读取(忽略前两个字段之后的所有字段;如果字段实际上是索引1和3,则可以for (_, poemid, _, size, *_), c, a in zip(...):使用for (_, poemid, _, size, *_), c, a in zip(...):代替),将它们与您的计算值配对,然后将其写出。 我确定pandas有更好的方法,但这根本不需要第三方模块,因此在某些情况下可能更可取。

要将其拆分为多个函数,您需要在函数外部打开文件或列出结果(因此, with块不会在完成之前切断对文件的访问。例如:

def get_id_size():
    with open('poem.csv', newline='') as inf:
        return [(poemid, size) for poemid, size, *_ in csv.reader(inf)]

cli = calculate_cli()
ari = calculate_ari()

with open('poem_data.csv', 'w', newline='') as outfile:
    csvout = csv.writer(outfile)
    # write header
    csvout.writerow(['poemid', 'poemsize', 'cli', 'ari'])
    for (poemid, size), c, a in zip(get_id_size(), cli, ari):
        csvout.writerow([poemid, size, c, a])

注意:这是Py3代码; Py2 csv模块需要进行更改。

熊猫不是必需的,但是它将简化您的生活。 您可以执行以下get_id_size()完全删除功能get_id_size() ):

import pandas as pd

df = pd.read_csv('poem_info.csv')

# Change the column name of poemname
df.rename(columns={'poemname':'poemid'}, inplace=True)

# Add the new columns
df['cli'] = calculate_cli()
df['ari'] = calculate_ari()

# Export
df.to_csv('poem_data.csv',header=True,index=False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM