我想使用与本主题中讨论的功能类似的功能: 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/