我有一个看起来像这样的csv文件
Date,A,B,C,...,X
2016/04,ColA,ColB,ColC,...,ColX
2016/05,ColA,ColB,ColC,...,ColX
2016/06,ColA,ColB,ColC,...,ColX
2016/07,ColA,ColB,ColC,...,ColX
2016/08,ColA,ColB,ColC,...,ColX
2016/09,ColA,ColB,ColC,...,ColX
2016/10,ColA,ColB,ColC,...,ColX
2016/11,ColA,ColB,ColC,...,ColX
2016/12,ColA,ColB,ColC,...,ColX
和一个创建如下列表的函数:
['2016/08', 67287800000.00001, '2016/09', -22714300000.0, '2016/10', 97335100000.0, '2016/11', 97579300000.0, '2016/12', 97723900000.0]
这些列表将传递给以下函数
def write_graph_data(cat, data_list, column):
if len(data_list) > 0:
row_num = 0
for row in pd.read_csv('./data/%s_f.csv' % cat, sep=',', error_bad_lines=False, chunksize=1, header=0):
date = row.at[row_num,'Date']
if date == data_list[0]:
row[column] = data_list[1]
data_list.pop(0)
data_list.pop(0)
row_num += 1
此函数逐行读取csv文件,并且每行检查“日期”列中的值。如果该值与第一个列表条目相同,则第二个列表条目将添加到新列中的行中,如下所示
2016/08,ColA,ColB,ColC,...,ColX,67287800000.00001
如何使用更改的行保存我的csvfile?
答案 0 :(得分:0)
你可以尝试在熊猫中连接
lst = ['2016/08', 67287800000.00001, '2016/09', -22714300000.0, '2016/10', 97335100000.0, '2016/11', 97579300000.0, '2016/12', 97723900000.0]
df1 = pd.read_csv('./data/%s_f.csv' % cat, sep=',', error_bad_lines=False, chunksize=1, header=0)
df2 = pd.DataFrame(zip(lst[::2], lst[1::2]),columns=['Date','val'])
new_df = pd.concat([df1.set_index('Date'),df2.set_index('Date')], axis =1)
new_df.to_csv('new_file.csv')
输出:
A B C ... X val
2016/04 ColA ColB ColC ... ColX NaN
2016/05 ColA ColB ColC ... ColX NaN
2016/06 ColA ColB ColC ... ColX NaN
2016/07 ColA ColB ColC ... ColX NaN
2016/08 ColA ColB ColC ... ColX 6.728780e+10
2016/09 ColA ColB ColC ... ColX -2.271430e+10
2016/10 ColA ColB ColC ... ColX 9.733510e+10
2016/11 ColA ColB ColC ... ColX 9.757930e+10
2016/12 ColA ColB ColC ... ColX 9.772390e+10