本文介绍了 pandas 无法使用重复轴计算isin的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据框是这样的:

             userid           codeassigned         timestamp
15           553938              M1           1499371200000
15390        527638              M2           1599731200000
15389        521638              M2           1399901200000
15388        521638              M3           1439841200000
15387        553938              M4           1499521200000

我通过执行以下操作获取了此数据框的子集(具有最新时间戳的用户):

I have taken a subset of this dataframe (user with latest timestamp) by doing:

df = df.sort_values('timestamp', ascending=False)
mask = df.duplicated('userid')
subset_df = df[~mask]

现在,我希望来自主数据帧的所有行(userid,timestamp)位于subset_df中(可以有多个行具有相同的[userid,timestamp],但分配了不同的代码);我正在为此:

Now, I want all the rows from main dataframe where (userid, timestamp) are in subset_df (there can be multiple rows with same[userid, timestamp] but with different code assigned); for which I'm doing:

subset_df[['userid', 'timestamp']].isin(df)

但是,我遇到此错误:

ValueError: cannot compute isin with a duplicate axis.

知道我在做什么错吗?

推荐答案

您需要 merge 用于带有过滤子集的内部联接:

You need merge for inner join with filtered subset:

subset_df = df.loc[~mask, ['userid', 'timestamp']]

df = subset_df.merge(df)

或者:

df = subset_df[['userid', 'timestamp']].merge(df)

这篇关于 pandas 无法使用重复轴计算isin的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 07:29