gpt4 book ai didi

python - 通过value_counts()将一个dataframe分成两个DF

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:10 25 4
gpt4 key购买 nike

我的框架:

name    rs      number
11 5566 64882
41 534326 5345
11 5566 3312
44 2341 5553
1 6223 2333

它有 70 万多行。

df.rs.value_counts() = 

5566 2
534326 1
2341 1
6223 1

我需要根据 value_counts 将该框架划分为另外 2 个较小的框架。我的意思是:在 UniqueDF 中应该只有没有 rs 重复的行:

    name    rs      number
41 534326 5345
44 2341 5553
1 6223 2333

并且在 DuplicatedDF 中应该只是重复(所有重复的行,因为 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_duplicatesduplicated使用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

并使用复制:

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

关于python - 通过value_counts()将一个dataframe分成两个DF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com