Python pandas:选择特定行满足条件的列

时间:2016-09-23 14:12:38

标签: python pandas select

我有一个数据帧dfall,其中有一行标有' row1'有价值的' foo'并且' bar'。我想只选择dfall的列,其中' row1'有价值' foo'。

换句话说:

dfall= pd.DataFrame([['bar','foo'],['bla','bli']], columns=['col1','col2'], index=['row1','row2'])

我希望结果列#col;'包含:['foo','bli']

我试过了:

dfall[dfall.loc['row1'].isin(['foo'])]

我收到错误

IndexingError: Unalignable boolean Series key provided

有人可以帮我解决这个问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将df与标量值进行比较,然后将anyaxis=0一起使用,并将此布尔掩码传递给ix

In [324]:
df.ix[:,(df == 'foo').any(axis=0)]

Out[324]:
     col2
row1  foo
row2  bli

打破上述情况:

In [325]:
df == 'foo'

Out[325]:
       col1   col2
row1  False   True
row2  False  False

In [326]:
(df == 'foo').any(axis=0)

Out[326]:
col1    False
col2     True
dtype: bool

答案 1 :(得分:0)

使用EdChum的答案,使其符合特定行: df.ix [:,(df.loc [' row1'] ==' foo')]