本文介绍了 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!