[英]Python pandas: Select columns where a specific row satisfies a condition
我有一个数据框 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
并将此布尔掩码传递给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
使用 EdChum 的答案,使其行特定我做了: df.ix[:,(df.loc['row1'] == 'foo')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.