2015-11-04 76 views
1

我一直在線上搜索,發現類似的問題,但仍然無法找到我正在尋找的答案。 我有2個Excel文件:將列從一個數據框添加到另一個Python熊貓

數據1

ColumnA columnB columnC columnD 
    A   B   C   D 
    A   B   C   D 
    A   B   C   D 

數據2

ColumnE columnF columnG 
    E   F   G   
    E   F   G   
    E   F   G  

我想在F列中添加從數據2至數據1:

ColumnA columnB columnC columnD columnF 
    A   B   C   D  F 
    A   B   C   D  F 
    A   B   C   D  F 

我試過

data2['columnF'] = data1['columnF'] #doesn't work 

也試過

data1['columnF'] = '' #adding a columnF to data1 
merg_left = pd.merge(left=data1,right=data2, how='left',  
left_on='columnF', right_on='columnF') 
#gave me a weird output file 
+0

您需要添加更多的細節。他們有相同的索引嗎?如果是的話'data2 ['columnF'] = data1 ['columnF']'會起作用。是相同的形狀?他們有一些共同的索引嗎? 'pd.concat'可能是你想使用的,但是在我們知道索引和形狀是什麼之前,我們不能準確地告訴你如何使用它。 – JoeCondron

回答

1
import pandas as pd 
import io 

data = """ 
ColumnA columnB columnC columnD 
    A   B   C   D 
    A   B   C   D 
    A   B   C   D 
    """ 
data1 = """ 
ColumnE columnF columnG 
    E   F   G 
    E   F   G 
    E   F   G 
    """ 

df = pd.read_csv(io.StringIO(data), delimiter='\s+') 
df1 = pd.read_csv(io.StringIO(data1), delimiter='\s+') 

df['columnF'] = pd.Series(df1['columnF']) 

print(df) 

會給你:

ColumnA columnB columnC columnD columnF 
0  A  B  C  D  F 
1  A  B  C  D  F 
2  A  B  C  D  F 
+0

謝謝!我想我理解你的代碼,但data和data1是我使用pd.read_csv和pd.read_excel讀取的2個文件,而不是我放在那裏的簡單表格(希望使這裏的一切看起來很乾淨),當我分配io.StringIO(data)和io.StringIO(data1)錯誤消息給了「initial_value必須是str或None,而不是DataFrame」,你知道我應該如何解決這個問題嗎?謝謝 – Jessica

+0

'io.StringIO()'只是一種創建示例數據的方法。你應該像使用'read_csv'和'read_excel'一樣。主要部分是'df ['columnF'] = pd.Series(df1 ['columnF'])' – Leb

+0

謝謝你的工作。如果我想在df中將'columnF'從df1插入到'columnA'後的列中,我會做類似'df ['columnA'+ 1] = df ['columnF']'嗎? – Jessica

相關問題