当前位置: 首页 > 面试题库 >

熊猫中的“反合并”(Python)

傅玮
2023-03-14
问题内容

如何在两个数据框中找出同名列之间的区别?我的意思是,我有一个名为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

然后,您可以在_mergecol上过滤结果合并的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或,但是无法提供所需的合并输出: 问题答案: 我认为您需要首先转换两列,因为需要相同的内容: