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

如何在熊猫中合并“(df1&not df2)”数据帧?

隗嘉歆
2023-03-14
问题内容

我有2个带有通用列/键(x,y)的熊猫数据框df1和df2。

我想对键(x,y)进行“(df1&not df2)”合并,这意味着我希望我的代码返回仅包含df1中而不包含df2中包含(x,y)行的数据框。

SAS具有等效功能

data final;
merge df1(in=a) df2(in=b);
by x y;
if a & not b;
run;

谁能优雅地在熊猫中复制相同的功能?如果我们可以在merge()中指定how =“ left-right”,那就太好了。


问题答案:

我刚刚升级到10天前发布的版本0.17.0 RC1。刚刚发现pd.merge()在此新发行版中有一个新的参数,称为indicator =
True,可以以Pandonic方式实现这一目标!

df=pd.merge(df1,df2,on=['x','y'],how="outer",indicator=True)
df=df[df['_merge']=='left_only']

指示器:在输出数据帧中添加一列,称为_merge,其中包含有关每一行源的信息。_merge是分类类型的,对于合并键仅出现在“
left”数据帧中的观察值,其值为left_only;对于合并键仅出现在“
right”数据帧中的观察值,则为right_only;如果两个观察值的合并键都在两个值中。

http://pandas-docs.github.io/pandas-docs-travis/merging.html#database-style-
dataframe-joining-merging



 类似资料:
  • 我有一个非常大的 pyspark 数据帧和一个较小的熊猫数据帧,我读入如下: 这两个数据帧都包含标记为“A”和“B”的列。我想创建另一个 pyspark 数据帧,其中只有 df1 中的那些行,其中“A”和“B”列中的条目出现在 中同名的列中。也就是说,使用 df2 的列“A”和“B”过滤 df1。 通常我认为这将是一个连接(通过实现),但是如何将熊猫数据帧与 pyspark 数据帧连接起来? 我负

  • 问题内容: 我在加入熊猫方面遇到问题,并且试图找出问题所在。假设我有一个x: 我应该能够通过简单的连接命令在y = x上将y与索引上的y联接,除了同名具有+2。 我希望决赛对双方都有1941个非值。我也尝试过合并,但是我有同样的问题。 我以为正确的答案是pandas.concat([x,y]),但这也不符合我的预期。 编辑:如果您在加入方面遇到问题,请阅读下面的韦斯答案。我有一个重复的时间戳。 问

  • 我用熊猫数据框来处理数据。现在我需要聚合数据,并想知道如何聚合数据。 我有: 我想用打印创建:

  • 问题内容: 我正在尝试使用两列来连接两个熊猫数据框: 但出现以下错误: 任何想法应该是正确的方法吗?谢谢! 问题答案: 尝试这个 https://pandas.pydata.org/pandas- docs/stable/reference/api/pandas.DataFrame.merge.html left_on:要在左侧DataFrame中加入的标签或列表或类似数组的字段名称。可以是Dat

  • 假设我有2个数据帧: DF1: Col1 | Col2 | Col3 XCN000370/17-18C|XCN0003711718C|0003971718 DF2 Col1 | Col2 | Col3 XCN0003711718C|XCN0003711718C|0003971718 我希望它们像这样合并: 首次匹配Col1(DF1)和Col1(DF2) 在保持不匹配的情况下,将Col1(DF1)与

  • 我有两个数据帧,都有一个键列,可能有重复项,但数据帧大部分都有相同的重复键。我希望在该键上合并这些数据帧,但这样做的方式是,当两者具有相同的副本时,这些副本将分别合并。此外,如果一个数据帧的键的副本比另一个多,我希望它的值填充为NaN。例如: 我正在尝试获得以下输出 所以基本上,我想把复制的K2键当作K2_1,K2_2。。。然后在数据帧上进行how='outer'合并。你知道我怎样才能做到这一点吗