我有一个包含公司信息的数据集。具体来说,有两个列,称为 CUSIP 和 RCID。我想首先取出所有具有重复 RCID 的观察结果。所以如果我的数据集如下,我想取出记录3,4,5,6,7,8。我能够做到这一点
fin_rcid_dup = df['rcid'].duplicated(keep=False)
filtered_df = df[fin_rcid_dup]
我想进一步取出一组记录(具有相同rcid的观测值属于同一组),其中至少有一个记录具有非缺失的cusip,即我想取出3,4,5, 8,但不是 6,7,因为 rcid == 673253 的所有记录都错过了 cusip。你知道我该怎么做吗?
谢谢!
我试过了
has_duplicates = df['rcid'].duplicated(keep=False)
cusip_not_missing = df['cusip'].isna()
filtered_df = df[has_duplicates & cusip_not_missing]
但是这样我只能取出4个,因为对于rcid == 362736的其他记录,他们缺少cusip
最佳答案
使用notna
和groupby.transform
:
has_duplicates = df['rcid'].duplicated(keep=False)
cusip_not_missing = df['cusip'].notna().groupby(df['rcid']).transform('any')
filtered_df = df[has_duplicates & cusip_not_missing]
关于python - 使用每组至少一个具有非缺失 cusip 标识符的记录来过滤所有重复观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77129775/