如何在两个数据框中找出同名列之间的区别?我的意思是,我有一个名为X的数据框A和一个名为X的数据框B,如果这样做的话pd.merge(A, B, on=['X'])
,我将获得A和B的通用X值,但是我如何获得“非通用”的X值?
如果将合并类型更改为how='outer'
,indicator=True
这将添加一列以告诉您这些值是否仅是左/左右/右:
In [2]:
A = pd.DataFrame({'x':np.arange(5)})
B = pd.DataFrame({'x':np.arange(3,8)})
print(A)
print(B)
x
0 0
1 1
2 2
3 3
4 4
x
0 3
1 4
2 5
3 6
4 7
In [3]:
pd.merge(A,B, how='outer', indicator=True)
Out[3]:
x _merge
0 0.0 left_only
1 1.0 left_only
2 2.0 left_only
3 3.0 both
4 4.0 both
5 5.0 right_only
6 6.0 right_only
7 7.0 right_only
然后,您可以在_merge
col上过滤结果合并的df :
In [4]:
merged = pd.merge(A,B, how='outer', indicator=True)
merged[merged['_merge'] == 'left_only']
Out[4]:
x _merge
0 0.0 left_only
1 1.0 left_only
2 2.0 left_only
您也可以使用isin
和否定掩码以查找不在B中的值:
In [5]:
A[~A['x'].isin(B['x'])]
Out[5]:
x
0 0
1 1
2 2
问题内容: 我有一个熊猫,其中有多个列: 其中和是包含相同数据但名称不同的列。有没有一种方法可以将组成行的行移动到理想状态,同时保持名称? 最后,DataFrame应该显示为: 那就是构成bar的NaN值被替换为的值。 问题答案: 尝试这个: 如果您希望该数据成为新列,只需将结果分配给即可。
问题内容: 我想对具有日期时间索引的数据框执行联接/合并/追加操作。 假设我有,我想添加它。 可以具有更少或更多的列,并且索引重叠。对于索引匹配的所有行,如果具有与相同的列,我希望使用的值覆盖的值。 如何获得理想的结果? 问题答案: 如何:? 请注意,它从不与重叠的索引中获取值。如果这不能完全满足您的要求,我将愿意改进此功能/为其添加选项。
问题内容: 我在加入熊猫方面遇到问题,并且试图找出问题所在。假设我有一个x: 我应该能够通过简单的连接命令在y = x上将y与索引上的y联接,除了同名具有+2。 我希望决赛对双方都有1941个非值。我也尝试过合并,但是我有同样的问题。 我以为正确的答案是pandas.concat([x,y]),但这也不符合我的预期。 编辑:如果您在加入方面遇到问题,请阅读下面的韦斯答案。我有一个重复的时间戳。 问
问题内容: 我有不同的数据框,需要根据日期列将它们合并在一起。如果我只有两个数据帧,则可以使用来对三个数据帧进行操作,但是,使用多个数据帧将变得非常复杂且难以读取。 所有数据框都有一个共同的列- ,但是它们没有相同数量的行或列,而我只需要每个数据框共有每个日期的那些行。 因此,我正在尝试编写一个递归函数,该函数返回一个包含所有数据的数据框,但是它不起作用。那我应该如何合并多个数据框? 我试图dif
问题内容: 我正在尝试在date列上合并两个数据框(都尝试作为type或,但是无法提供所需的合并输出: 问题答案: 我认为您需要首先转换两列,因为需要相同的内容: