2015-11-04 75 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

相关问题