我的框架:
name rs number
11 5566 64882
41 534326 5345
11 5566 3312
44 2341 5553
1 6223 2333
它有 700k+ 行。
df.rs.value_counts() =
5566 2
534326 1
2341 1
6223 1
我需要通过 value_counts 将该帧划分为另外 2 个较小的帧。我的意思是:inUniqueDF
应该只是没有 rs 重复的行:
name rs number
41 534326 5345
44 2341 5553
1 6223 2333
并且 inDuplicatedDF
应该只是重复(所有重复的行,因为 rs 可能相同,但另一个 cols 具有不同的值):
name rs number
11 5566 64882
11 5566 3312
我试过这样的事情:
Duplicate_rs_df = df.drop(df.index[np.where(df.rs.value_counts() <1)])
unique1 = df.drop(df.index[np.where(df.rs.value_counts() >1)])
但是当我通过 couts_values 检查 dfs 仍然有重复时。我的代码有什么问题,我怎样才能以更好的方式做到这一点?
使用pandas.DataFrame.drop_duplicates
并duplicated
用keep=False
:
鉴于df
:
name rs number
0 11 5566 64882
1 41 534326 5345
2 11 5566 3312
3 44 2341 5553
4 1 6223 2333
使用drop_duplicates
:
uniq_df = df.drop_duplicates('rs', False)
print(uniq_df)
name rs number
1 41 534326 5345
3 44 2341 5553
4 1 6223 2333
并使用duplicated
:
dup_df = df[df.duplicated('rs', False)]
print(dup_df)
name rs number
0 11 5566 64882
2 11 5566 3312
或者更简单,df.duplicated('rs', False)
只使用:
ind = df.duplicated('rs', False)
print(df[~ind])
name rs number
1 41 534326 5345
3 44 2341 5553
4 1 6223 2333
print(df[ind])
name rs number
0 11 5566 64882
2 11 5566 3312
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句