简体   繁体   English

Python + Pandas:为csv文件中的特定行添加值

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

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