选择Pandas数据框中任何列包含字符串的所有行的最简洁方法是什么?
例如,给定以下数据框,选择任何列中的值包含的行的最佳方法是b
什么?
df = pd.DataFrame({
'x': ['foo', 'foo', 'bar'],
'y': ['foo', 'foo', 'foo'],
'z': ['foo', 'baz', 'foo']
})
Run Code Online (Sandbox Code Playgroud)
我对熊猫没有经验,到目前为止我提出的最好的是相当麻烦的df[df.apply(lambda r: r.str.contains('b').any(), axis=1)]
.有更简单的解决方案吗?
关键的是,我想检查任何列中的匹配项,而不是特定列.我能说的其他类似问题只能解决一个列或一列列.
ihi*_*wer 11
这个问题没有给出答案..但是问题本身和评论已经得到了答案,这对我来说非常有效..而且我没有找到答案.
所以我只是复制粘贴答案给那些能发现它有用的人.我为case不敏感的serach添加了case = False
来自@Reason的解决方案:
到目前为止,我提出的最好的是相当麻烦的
这个对我有用.
df[df.apply(lambda r: r.str.contains('b', case=False).any(), axis=1)]
Run Code Online (Sandbox Code Playgroud)
来自@rbinnun的解决方案:
这个对我来说是一个测试数据集..但对于一些真实的数据集..它返回了如下的unicode错误,但通常也是一个很好的解决方案我认为
df[df.apply(lambda row: row.astype(str).str.contains('b', case=False).any(), axis=1)]
负责非字符串列,nans等.
UnicodeEncodeError: 'ascii' codec can't encode character u'\xae' in position 5: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6398 次 |
最近记录: |