2017-05-08 179 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