gpt4 book ai didi

python-3.x - 如果任何列中的值介于两个值之间,则选择 DataFrame 中的行

转载 作者:行者123 更新时间:2023-12-02 20:21:42 24 4
gpt4 key购买 nike

我查了一下,我认为我所拥有的应该有效,但事实并非如此。正在评估第一个条件 (>= 80),但未评估第二个条件 (<= 100)。

我想要其中任何列值在 80 到 100 之间(含 80 和 100)的每一行,但是,如果任何列值大于 100,则将其排除。

我应该只能看到 AP-2、AP-8 和 AP-9 行。

import pandas as pd

df = pd.DataFrame({'AP-1': [30, 32, 34, 31, 33, 35, 36, 38, 37],
'AP-2': [30, 32, 34, 80, 33, 35, 36, 38, 37],
'AP-3': [30, 32, 81, 31, 33, 101, 36, 38, 37],
'AP-4': [30, 32, 34, 95, 33, 35, 103, 38, 121],
'AP-5': [30, 32, 34, 31, 33, 144, 36, 38, 37],
'AP-6': [30, 32, 34, 31, 33, 35, 36, 110, 37],
'AP-7': [30, 87, 34, 31, 111, 35, 36, 38, 122],
'AP-8': [30, 32, 99, 31, 33, 35, 36, 38, 37],
'AP-9': [30, 32, 34, 31, 33, 99, 88, 38, 37]}, index=['1', '2', '3', '4', '5', '6', '7', '8', '9'])


df1 = df.transpose()

print(df1)
print()

df2 = df1[(df1.values >= 80).any(1) & (df1.values <= 100).any(1)]

print(df2)

df2 的版本如下:
1 2 3 4 5 6 7 8 9
AP-2 30 32 34 80 33 35 36 38 37
AP-3 30 32 81 31 33 101 36 38 37
AP-4 30 32 34 95 33 35 103 38 121
AP-5 30 32 34 31 33 144 36 38 37
AP-6 30 32 34 31 33 35 36 110 37
AP-7 30 87 34 31 111 35 36 38 122
AP-8 30 32 99 31 33 35 36 38 37
AP-9 30 32 34 31 33 99 88 38 37

最佳答案

这是另一个想法,将掩码分开并使用 & 连接:

import pandas as pd

df = pd.DataFrame({'AP-1': [30, 32, 34, 31, 33, 35, 36, 38, 37],
'AP-2': [30, 32, 34, 80, 33, 35, 36, 38, 37],
'AP-3': [30, 32, 81, 31, 33, 101, 36, 38, 37],
'AP-4': [30, 32, 34, 95, 33, 35, 103, 38, 121],
'AP-5': [30, 32, 34, 31, 33, 144, 36, 38, 37],
'AP-6': [30, 32, 34, 31, 33, 35, 36, 110, 37],
'AP-7': [30, 87, 34, 31, 111, 35, 36, 38, 122],
'AP-8': [30, 32, 99, 31, 33, 35, 36, 38, 37],
'AP-9': [30, 32, 34, 31, 33, 99, 88, 38, 37]},
index=['1', '2', '3', '4', '5', '6', '7', '8', '9'])

# This is the actual frame you want
df = df.transpose()

m1 = (df >= 80).any(1)
m2 = ~(df >= 100).any(1) #<-- Invert the statement with ~

df2 = df.loc[m1&m2]
print(df2)

打印:

      1   2   3   4   5   6   7   8   9
AP-2 30 32 34 80 33 35 36 38 37
AP-8 30 32 99 31 33 35 36 38 37
AP-9 30 32 34 31 33 99 88 38 37

关于python-3.x - 如果任何列中的值介于两个值之间,则选择 DataFrame 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225130/

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