我有一个熊猫DataFrame,我想选择某些值为True的行。从任意数量条件的熊猫DataFrame中选择行
df = DataFrame([[True, True, True], [True, False, True], [True, True, False]], index=['a', 'b', 'c'], columns=['val1', 'val2', 'other'])#, columns=['val1', 'other'])
# example DataFrame:
val1 val2 other
a True True True
b True False True
c True True False
我想要哪些列的名称包含字符串'val'的列的值为True。在这个示例DataFrame的情况下,这意味着我关心列'val1'和'val2'中的值。如果我知道这两列的具体名称,这个选择很容易:
cond = df['val1'] & df['val2']
df[cond]
# gives me:
val1 val2 other
a True True True
c True True False
到目前为止这么好。但是,在我的实际使用情况中,我不知道会有多少'val'列,或者它们的确切名称是什么。
我知道如何让所有的“VAL”列:
df.columns[df.columns.str.contains('val')]
# gives me:
Index([u'val1', u'val2'], dtype='object')
但我怎么把这些结合在一起?给定一个任意长度的列名称列表,如何使用布尔索引来获取那些列的值为True的行?
你可以发表你的期望的结果集? – MaxU