[英]Python + Pandas: Add value to specific row in csv-file
I have a csvfile which looks like this 我有一个看起来像这样的csvfile
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
and a function which creates lists like this: 和一个创建如下列表的函数:
['2016/08', 67287800000.00001, '2016/09', -22714300000.0, '2016/10', 97335100000.0, '2016/11', 97579300000.0, '2016/12', 97723900000.0]
These lists get passed to following function 这些列表传递给以下函数
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
This function reads the csv file row-wise and for every row checks the value in the 'Date' column. 此函数逐行读取csv文件,并针对每一行检查“日期”列中的值。 If the value is the same as the first list entry, the second list entry will be added to the row in a new column like this 如果该值与第一个列表条目相同,则第二个列表条目将被添加到新列中的行中,如下所示
2016/08,ColA,ColB,ColC,...,ColX,67287800000.00001
How can i save my csvfile with the changed row(s)? 如何保存更改后的行的csvfile?
you could try concat in pandas 你可以在熊猫上尝试concat
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')
output: 输出:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.