根据多个条件获取df小节 [英] get subsection of df based on multiple conditions
本文介绍了根据多个条件获取df小节的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试基于多个条件从df中提取行,在选择任何行之前必须满足所有条件,否则将没有任何选择.
I'm trying to extract rows from a df based on multiple conditions, ALL of the conditions must be met before any rows are selected else nothing.
我的df
columns = ['is_net', 'is_pct', 'is_mean', 'is_wgted', 'is_sum']
index = ['a','b','c','d']
data = [['True','True','False','False', 'False'],
['True','True','True','False', 'False'],
['True','True','False','False', 'True'],
['True','True','False','True', 'False']]
df = pd.DataFrame(columns=columns, index=index, data=data)
df
is_net is_pct is_mean is_wgted is_sum
a True True False False False
b True True True False False
c True True False False True
d True True False True False
我的条件必须采用以下格式:
My conditions which must be in this format:
conditions = {'is_net': 'True',
'is_pct': 'True',
'is_mean': 'False',
'is_wgted': 'True',
'is_sum': 'False'}
预期输出:
is_net is_pct is_mean is_wgted is_sum
d True True False True False
推荐答案
我认为诀窍是将conditions
变成系列:
I think the trick is to make conditions
into a Series:
>>> pd.Series(conditions)
is_mean False
is_net True
is_pct True
is_sum False
is_wgted True
dtype: object
>>> (df == pd.Series(conditions))
is_mean is_net is_pct is_sum is_wgted
a True True True True False
b False True True True False
c True True True False False
d True True True True True
>>> (df == pd.Series(conditions)).all(axis=1)
a False
b False
c False
d True
dtype: bool
>>> df[(df == pd.Series(conditions)).all(axis=1)]
is_net is_pct is_mean is_wgted is_sum
d True True False True False
这篇关于根据多个条件获取df小节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文