根据其他数据框向pandas数据框添加新列

时间:2016-09-06 23:38:30

标签: python pandas dataframe machine-learning data-science

我正在尝试在pandas数据框中设置一个新列(实际上是两列),数据来自其他数据帧。

我有以下两个数据帧(它们是用于此目的的示例,原始数据帧是如此大):

In [116]: df0
Out[116]:     
   A  B  C
0  0  1  0
1  2  3  2
2  4  5  4
3  5  5  5


In [118]: df1
Out[118]: 
   A  D  E
0  2  7  2
1  6  5  5
2  4  3  2
3  0  1  0
4  5  4  6
5  0  1  0

我希望有一个新的数据帧(或添加到df0,无论如何),如:

df2: 
   A  B  C  D  E
0  0  1  0  1  0
1  2  3  2  7  2
2  4  5  4  3  2
3  5  5  5  4  6

如您所见,在结果数据帧中不存在A = 6的行,该行存在于df1中但不存在于df0中。 A = 0的行在df1中重复,但在结果df2中不重复。

实际上,我在选择方法上遇到了麻烦。我可以这样做:

df1.loc[df1['A'].isin(df0['A'])]

但我不确定如何将keep部分应用于唯一数据(请记住df1可以包含重复数据)并将两列添加到df2数据集(或将它们添加到df0)。 我在这里搜索,我不知道如何应用像groupby这样的东西,甚至是地图。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是mergedocs)的基本应用:

import pandas as pd
df2 = pd.merge(df0,df1, left_index=True, right_index=True)

答案 1 :(得分:0)

尝试一下 new_data = df0.set_index('A')。join(df1.set_index('A')) 您可能会得到索引错误,然后必须等于。数据框中的索引数