gpt4 book ai didi

python - Pandas - 根据列列表中的值选择行

转载 作者:行者123 更新时间:2023-12-02 19:43:20 26 4
gpt4 key购买 nike

相关:Selecting with complex criteria from pandas.DataFrame

我有一些数据框:

df = pd.DataFrame({'name': ['apple1', 'apple2', 'apple3', 'apple4', 'orange1', 'orange2', 'orange3', 'orange4'], 
'A': [0, 0, 0, 0, 0, 0 ,0, 0],
'B': [0.10, -0.15, 0.25, -0.55, 0.50, -0.51, 0.70, 0],
'C': [0, 0, 0.25, -0.55, 0.50, -0.51, 0.70, 0.90],
'D': [0.10, -0.15, 0.25, 0, 0.50, -0.51, 0.70, 0.90]})
df
name A B C D
0 apple1 0 0.10 0.00 0.10
1 apple2 0 -0.15 0.00 -0.15
2 apple3 0 0.25 0.25 0.25
3 apple4 0 -0.55 -0.55 0.00
4 orange1 0 0.50 0.50 0.50
5 orange2 0 -0.51 -0.51 -0.51
6 orange3 0 0.70 0.70 0.70
7 orange4 0 0.00 0.90 0.90

现在假设我想选择 ABC 中值小于 0.25 的所有行D:

df[(df['A'] < 0.25) & 
(df['B'] < 0.25) &
(df['C'] < 0.25) &
(df['D'] < 0.25)]
name A B C D
0 apple1 0 0.10 0.00 0.10
1 apple2 0 -0.15 0.00 -0.15
3 apple4 0 -0.55 -0.55 0.00
5 orange2 0 -0.51 -0.51 -0.51

很好,但是我可以使用列列表作为输入来实现同样的事情吗?

假设我想过滤 100 列而不是 4 列。

最佳答案

在这种情况下,因为您在多个列上具有相同的条件,所以您可以使用 .all axis=1检查条件是否为 True对于所有选定的列:

df[df.loc[:, 'A':].lt(0.25).all(axis=1)]

name A B C D
0 apple1 0 0.10 0.00 0.10
1 apple2 0 -0.15 0.00 -0.15
3 apple4 0 -0.55 -0.55 0.00
5 orange2 0 -0.51 -0.51 -0.51

如果您的列排序不是很好,请使用双括号来选择数据:

df[df[['A', 'B', 'C', 'D']].lt(0.25).all(axis=1)]

注意: .lt < 相同代表less than”


如果您有很多列只有一个字母,手动选择太多,我们可以使用 DataFrame.filterregex :

df[df.filter(regex='[A-Z]').lt(0.25).all(axis=1)]

关于python - Pandas - 根据列列表中的值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59779019/

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