gpt4 book ai didi

python - 如何根据多个值的总和删除 Pandas 中的行?

转载 作者:行者123 更新时间:2023-12-02 07:22:18 25 4
gpt4 key购买 nike

我构建了一个 df:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1,6,size=(10, 6)),
columns=list('ABCDEF'))
df = df.applymap(lambda x: 'Sp'+str(x))
print(df)

给出类似的东西:

     A    B    C    D    E    F
0 Sp4 Sp5 Sp4 Sp4 Sp4 Sp3
1 Sp2 Sp3 Sp5 Sp2 Sp2 Sp3
2 Sp2 Sp3 Sp2 Sp4 Sp5 Sp5
3 Sp5 Sp3 Sp1 Sp4 Sp4 Sp3
4 Sp3 Sp1 Sp1 Sp5 Sp4 Sp1
5 Sp1 Sp4 Sp4 Sp5 Sp4 Sp4
6 Sp2 Sp1 Sp3 Sp4 Sp5 Sp3
7 Sp3 Sp3 Sp2 Sp1 Sp4 Sp4
8 Sp1 Sp1 Sp1 Sp4 Sp2 Sp3
9 Sp5 Sp5 Sp3 Sp4 Sp1 Sp3

如何删除(例如)Sp2 和 Sp3 之和大于 2 的所有行(即它们的任意组合连续出现两次以上)?

我一直在尝试使用pandas.DataFrame.eq

例如:df[~df.eq('Sp2').sum(1).gt(2)],但这只会删除 Sp2 > 2 的行。

但我不知道如何合并逻辑 OR 使其类似于 dat[~dat.eq('Sp2' or 'Sp3').sum(1).gt(2)]

最佳答案

使用pandas.DataFrame.isin:

new_df = df[df.isin(['Sp2', 'Sp3']).sum(1).le(2)]
print(new_df)

输出:

     A    B    C    D    E    F
0 Sp4 Sp5 Sp4 Sp4 Sp4 Sp3
3 Sp5 Sp3 Sp1 Sp4 Sp4 Sp3
4 Sp3 Sp1 Sp1 Sp5 Sp4 Sp1
5 Sp1 Sp4 Sp4 Sp5 Sp4 Sp4
8 Sp1 Sp1 Sp1 Sp4 Sp2 Sp3
9 Sp5 Sp5 Sp3 Sp4 Sp1 Sp3

关于python - 如何根据多个值的总和删除 Pandas 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59622304/

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