我有一个数据帧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
有人可以帮我解决这个问题吗?提前谢谢!
答案 0 :(得分:1)
您可以将df与标量值进行比较,然后将any
与axis=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')]