Python只能合并某些列

Python只能合并某些列,python,merge,pandas,Python,Merge,Pandas,是否可以只合并一些列?我有一个数据帧df1和列x、y、z,df2和列x、a、b、c、d、e、f等等 我想合并x上的两个数据帧,但我只想合并df2.a、df2.b列,而不是整个数据帧 结果将是一个包含x、y、z、a、b的数据帧 我可以合并然后删除不需要的列,但似乎有更好的方法。您可以合并子数据帧(仅使用这些列): 您可以使用.loc选择包含所有行的特定列,然后拉取该列。一个例子如下: pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='

是否可以只合并一些列?我有一个数据帧df1和列x、y、z,df2和列x、a、b、c、d、e、f等等

我想合并x上的两个数据帧,但我只想合并df2.a、df2.b列,而不是整个数据帧

结果将是一个包含x、y、z、a、b的数据帧


我可以合并然后删除不需要的列,但似乎有更好的方法。

您可以合并子数据帧(仅使用这些列):


您可以使用
.loc
选择包含所有行的特定列,然后拉取该列。一个例子如下:

pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='left', on='key')

在本例中,您正在合并dataframe1和dataframe2。您已选择在“键”上进行外部左连接。但是,对于dataframe2,您已经指定了
.iloc
,它允许您以数字格式指定所需的行和列。使用
选择所有行,但
[0:5]
选择前5列。您可以使用
.loc
按名称指定,但如果您处理的是长列名,则
.iloc
可能更好。

您希望使用两个括号,因此如果您正在执行VLOOKUP类型的操作:

df = pd.merge(df,df2[['Key_Column','Target_Column']],on='Key_Column', how='left')

这将为您提供原始df中的所有内容,并在df2中添加一个您想要加入的对应列。

这是为了合并两个表中选定的列

如果
table_1
包含
t1_a、t1_b、t1_c..、id、..t1_z
列, 和
表2
包含
t2\u a,t2\u b,t2\u c…,id,…t2\u z
列, 最后一个表中只需要t1_a,id,t2_a,那么

mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')
# save resulting output file    
mergedCSV.to_csv('output.csv',index = False)
如果要从目标数据帧中删除列,但联接需要这些列,则可以执行以下操作:

df1=df1.merge(df2[['a','b','key1']],how='left',
左上='key2',右上='key1')。下拉(列=['key1'])

.drop('key1')
部分将阻止'key1'保留在生成的数据帧中,尽管它首先需要加入。

安迪:天哪,这很容易……我需要休息一下,我显然把它弄得太复杂了。谢谢你的澄清!嗯,我想知道是否应该有一个本地的方法来做到这一点,就像dropna中的子集。。。将整合github发行版HMM。。。我试图用它将列“Unique\u External\u Users”从df2合并到df1,但出现了一个错误。。。“索引(['U','n','i','q','U','e','e','x','t','e','r','n','a',\n'l','U','s','e','r','s'],\n dtype='object')都不在[列]中。下面是代码…”。。。df1.merge(df2('Unique_External_Users'))@CoolDocMan我想你错过了建议的答案:
list('xab')
获取字符串'xab'的每个元素(字母)并将其转换为list元素,因此
list('xab')
返回
['x','a','b']
。如果每一列都有一个字母作为名称,那么这就行了。在您的情况下,我认为您需要执行df1.merge(df2['Unique\u External\u Users'],*其他参数)。。。很可能你现在已经解决了这个问题,只是把这个留给像我这样的新手,小心那个,在一个大的df上可能会很痛苦。最好是合并,然后立即在同一表达式中获取一个列切片。如果我尝试此操作,则会出现以下错误:
KeyError:“['key1']未在axis中找到”
try.drop(columns=['key1'])或.drop('key1',axis=1)或更短:
.drop('key1',1)
Target\u Column可以是一个列列表吗?我相信这应该是公认的答案@泡泡糖
mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')
# save resulting output file    
mergedCSV.to_csv('output.csv',index = False)