我正在尝试在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这样的东西,甚至是地图。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
这是merge
(docs)的基本应用:
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')) 您可能会得到索引错误,然后必须等于。数据框中的索引数