gpt4 book ai didi

python - 通过多个条件选择行的懒惰方式

转载 作者:行者123 更新时间:2023-12-05 08:46:53 24 4
gpt4 key购买 nike

具有如下分类值的列的典型设置:

df = pd.DataFrame([('A', 'buy', 'sub'),
('B', 'sell', 'prior'),
('C', 'hold', 'sub'),
('D', 'loan', 'none'),
('A', 'hold', 'sub'),
('A', 'buy', 'none')], columns=['name', 'action', 'class'])
    name     action   class
1 A buy sub
2 B sell prior
3 C hold sub
4 D loan none
5 A hold sub
6 A buy none

假设我想从 this thread 中选择具有多个条件的行,我可以这样做:

#selecting rows with name='A' AND action='buy'
df1 = df[(df['name']=='A') & (df['action']=='buy')]

#selecting rows with name='A' OR class='sub'
df2 = df[(df['name']=='A') | (df['class']=='sub')]

对于具有更多列和更多选择条件的数据框,上面的操作看起来很难看(即 &| 的长语句)。我希望做一些更紧凑的事情,就像这样:

df1 = df[df[['name', 'action']] == ('A', 'buy')]
df2 = df[df[['name', 'class']] *** ('A', 'sub')] *** is hybrid operator, maybe?

有什么懒惰的方法可以做到这一点?如果没有这样的方式,请随时建议关闭此问题。谢谢。

最佳答案

您可以为此使用 pandas 查询:

df.query('name == "A" and action=="buy"')

name action class
0 A buy sub
5 A buy none

如果您确定要查询的列,您可以将它们移动到索引中并通过 MultiIndexing 进行选择:

df = df.set_index(['name', 'action'])
df = df.sort_index() # avoid performance issues

df.loc(axis=0)['A', 'buy']

class
name action
A buy sub
buy none

关于python - 通过多个条件选择行的懒惰方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68824473/

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