python - 对来自两个数据帧的分组数据使用 isin() 函数

标签 python pandas lambda

我想使用与本主题中讨论的功能类似的功能: Using the isin() function on grouped data 。 但是,两个 DataFrame 具有不同的长度,并且都按变量分组。

这些函数应在两个 DataFrame 中按年份对列 Dev_stage 进行分组,比较分组数据并提供不在这些分组 DataFrame 中的数据。

我的片段:

>>> df1
Out:
    Dev_stage Year
0   1         1989
1   2         1989
2   2         1989
3   3         1989
4   1         1990
5   1         1990
6   3         1990

>>> df2
Out:
    Dev_stage Year
0   1         1989
1   2         1989
2   2         1990
3   1         1990
4   3         1990

我正在尝试这样的事情:

out = lambda x, y: x[~x['Dev_stage'].isin(y['Dev_stage'])]
out(df1.groupby('Year'), df2.groupby('Year'))

但也收到错误:'SeriesGroupBy' 对象没有属性 'isin'。我认为 lambda 可以解决这个问题。

期待这样的事情:

out:   
    Dev_stage Year
3   3         1989

谢谢!

最佳答案

IIUC,您可以使用内部合并来保留多列中相同的值,然后将其过滤掉

out = df1[~df1.index.isin(df1.reset_index().merge(df2, how='inner')['index'])]
print(out)

   Dev_stage  Year
3          3  1989
6          3  1990

关于python - 对来自两个数据帧的分组数据使用 isin() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72438095/

相关文章:

python - 使用 BeautifulSoup 获取 "' NoneType' 对象没有属性 'children' "

python - 如何在 Django 中向查询集添加自定义属性?

python - 如何通过 piprequirements.txt 从 VCS 安装包到当前目录?

python - 如何用匹配的名称替换列

c# - 获取 XML 上的嵌套元素(使用 Lambda)并设置为 List<Object>

api - 尝试添加 X-Amz-Invocation-Type :Event to existing API Gateway POST method

python - Django 。覆盖模型的保存

python - 根据列中的条件创建组/类

python - 使用 pandas 读取 csv 文件,其中列由不同数量的空格和逗号分隔

C#:Dictionary<String,String> 到 Dictionary<String, Dictionary<String,String>> 的转换