2017-05-08 239 views
0

我有两个CSV文件。我试图提取一个CSV文件的最后一列,并将其粘贴到最后一列到另一个CSV文件。熊猫:在CSV文件末尾添加一列

读取第一个CSV文件,并提取了最后一栏的代码是:

training_label_sort = pd.read_csv('small_labels.csv', header = None).sort(input_file.columns[0]) 

#extract the labels from labels csv file 
labels = training_label_sort.iloc[:,-1] 

一次,我已经提取的最后一栏,我读使用

input_file_labels = pd.read_csv('input_file_svd.csv', header = None) 

我想第二CSV将标签(从第一个csv文件中提取)添加到第二个csv文件的最后一列。

我试着这样做:

input_file_labels.merge(labels.to_frame()) 

,我也试过:

input_file_labels.join(labels) 

但我得到了这两个方法的错误。我尝试加入这两个文件的方式有什么问题吗?

回答

0

你只是想将标签列连接到第二个df的结尾? 如果是的话,你可以这样做:

input_file_labels['labels'] = labels 
+0

这给了一个错误:'索引错误:太多indexer' – Nik

+0

但是'input_file_labels [ '标签'] = labels.'工作,但在唯一的问题是它现在给我一个我不需要的标题列。 – Nik

+0

是的,您可以将标签分配给新列,因为标签是一个Series而不是数据框。你的意思是“它给我一个标题栏”。你能举一些例子来展示这个问题吗? – Allen

0

假设有两个CSV文件中:

test_1.csv:

status,date,user,labels 
Registered,12-10-2016,user1,APPLE 
Registered,22-05-2016,user2,FB 
Registered,19-11-2016,user3,GOOGLE 

test_2.csv:

status,date,user 
Registered,12-10-2016,user1 
Registered,22-05-2016,user2 
Registered,19-11-2016,user3 

你可以复制test_1.csv中的最后一列,并将test_2.csv中的所有数据合并到新文件new_test_2.csv

import pandas as pd 
csvfile1 = 'test_1.csv' 
csvfile2 = 'test_2.csv' 
training_label_sort = pd.read_csv(csvfile1) 
data = list(training_label_sort['labels']) # get last column of csvfile1 
with open(csvfile2, 'r') as fin, open('new_'+csvfile2, 'w') as fout: 
    reader = csv.reader(fin, lineterminator='\n') 
    writer = csv.writer(fout, lineterminator='\n') 
    writer.writerow(next(reader) + ['labels']) 
    for row, val in zip(reader, data): 
     writer.writerow(row + [val]) 

new_test_2.csv:

status,date,user,labels 
Registered,12-10-2016,user1,APPLE 
Registered,22-05-2016,user2,FB 
Registered,19-11-2016,user3,GOOGLE