根据另一个dataframe添加新列到pandas dataframe

5

我正在尝试在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'])]

但是我不确定如何应用保留唯一数据的部分(请记住,df1可能包含重复的数据),并将这两列添加到df2数据集中(或将它们添加到df0中)。我在这里搜索了一下,但我不知道如何应用类似于groupby甚至map的东西。有什么想法吗?谢谢!
2个回答

6
这是使用merge文档)的基本应用程序:
import pandas as pd
df2 = pd.merge(df0,df1, left_index=True, right_index=True)

我猜应该是这样的:pd.merge(df0, df1, on=['A']) - MaxU - stand with Ukraine
起初,我尝试了您的解决方案,然后由于性能改进,我转而使用了连接操作。 - ahmadali shafiee

0

尝试这个: new_data = df0.set_index('A').join(df1.set_index('A')) 如果出现索引错误,则需要使两个数据框中的索引数量相等


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接