![](/img/trans.png)
[英]Adding two columns of data together from a csv file into a new column in the same csv file in python
[英]Adding new data column to a csv file in python
我正在尝试做两件事...
这是该文件的示例...
date,id,type,ccy,mtm,base,20151015,20151016,20151019,20151020,20151021,20151022
20161209,118,book,cad,-2493980,0,3845,1902,-1130,6052,-5594,-1419
20161209,118A188,bond,cad,-407954,0,5,11,5,23,3,-7
20161209,118A193072,bond,cad,111227,0,-296,-155,73,-429,410,95
20161209,118A217,bond,cad,4058,0,0,0,0,-2,1,0
对于1)我可以将列添加到标题中,但它们的追加似乎是在标题上方而不是标题下方添加...我正在向标题添加...
导入os导入csv
data = '/home/usr/local/bin/dev/remote/xx-yyy-zzz-118-sample.csv'
file_path = (os.path.dirname(data))
portfolio = ((os.path.basename(data)).strip().split('-')[3])
with open(data, 'r') as f:
data = []
r = csv.reader(f, delimiter = ',')
header = next(r)
header.append('portfolio')
portfolio_col = next(r)
header.append('file_path')
file_path_col = next(r)
print(header)
旧标题...
['date', 'id', 'type', 'ccy', 'mtm', 'base', '20151015', '20151016', '20151019', '20151020', '20151021', '20151022']
新标题...
['date', 'id', 'type', 'ccy', 'mtm', 'base', '20151015', '20151016', '20151019', '20151020', '20151021', '20151022', 'portfolio', 'file_path']
我正在尝试像这样添加列,但它无法按我的意愿工作...
for row in f:
portfolio_col.append(portfolio)
file_path_col.append(file_path)
data.append(portfolio_col)
print(data)
它在行中迭代(某种),但不是我想要的方式...
[['20161209', '118', 'book', 'cad', '-2493980', '0', '3845', '1902', '-1130', '6052', '-5594', '-1419', '118', '118'], ['20161209', '118', 'book', 'cad', '-2493980', '0', '3845', '1902', '-1130', '6052', '-5594', '-1419', '118', '118']]
我也在努力在标题键上创建字典,但是这个问题已经足够长了,我可能会问另一个单独的问题...
另外,我尝试执行此操作,但是标题出现问题,列表...
with open(filename,'r') as f:
header=f.readline().strip().split(',')
data = []
for line in f:
values=line.strip().split(',')
row=dict()
for i,h in enumerate(header):
row[h]=values[i]
data.append(row)
像这样吗
data = '/home/usr/local/bin/dev/remote/xx-yyy-zzz-118-sample.csv'
file_path = (os.path.dirname(data))
portfolio = ((os.path.basename(data)).strip().split('-')[3])
with open(data, 'r') as f:
data = []
reader = csv.reader(f, delimiter = ',')
header = next(reader)
header.append('portfolio')
header.append('file_path')
print(header)
data.append(header)
for row in reader:
row.append(portfolio)
row.append(file_path)
data.append(row)
print(data)
您可以使用熊猫解决问题。 这样,将一列添加到文件并追加成为琐碎的任务。
import os
import pandas as pd
data = '../remote/xx-yyy-zzz-118-sample.csv'
df = pd.read_csv(data)
file_path = (os.path.dirname(data))
portfolio = ((os.path.basename(data)).strip().split('-')[3])
df['file_path'] = file_path
df['portfolio'] = portfolio
df.to_csv(data)
print(df)
date id type ccy mtm base 20151015 20151016 \
0 20161209 118 book cad -2493980 0 3845 1902
1 20161209 118A188 bond cad -407954 0 5 11
2 20161209 118A193072 bond cad 111227 0 -296 -155
3 20161209 118A217 bond cad 4058 0 0 0
20151019 20151020 20151021 20151022 file_path portfolio
0 -1130 6052 -5594 -1419 ../remote 118
1 5 23 3 -7 ../remote 118
2 73 -429 410 95 ../remote 118
3 0 -2 1 0 ../remote 118
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.