首页 文章

Python Pandas:为csv-file中的特定行添加值

提问于
浏览
0

我有一个看起来像这样的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

和一个创建如下列表的函数:

['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?

1 回答

  • 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
    

相关问题