我有一个数据框 dfall,其中有一行标记为“row1”,值为“foo”和“bar”。我只想选择 dfall 中“row1”值为“foo”的列。
换句话说:
dfall= pd.DataFrame([['bar','foo'],['bla','bli']], columns=['col1','col2'], index=['row1','row2'])
我想要结果列“col2”包含:['foo','bli']
我尝试过:
dfall[dfall.loc['row1'].isin(['foo'])]
我收到错误
IndexingError: Unalignable boolean Series key provided
有人可以帮我执行命令吗?提前致谢!
最佳答案
您可以将 df 与标量值进行比较,然后将 any
与 axis=0
一起使用,并将此 bool 掩码传递给 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
关于Python Pandas : Select columns where a specific row satisfies a condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39662941/