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