gpt4 book ai didi

python - 选择 Pandas 数据框中任何列包含字符串的行的最简洁方法?

转载 作者:太空狗 更新时间:2023-10-29 20:21:13 26 4
gpt4 key购买 nike

选择 Pandas 数据框中任何列包含字符串的所有行的最简洁方法是什么?

例如,给定以下数据框,选择任何列中的值包含 b 的那些行的最佳方法是什么?

df = pd.DataFrame({
'x': ['foo', 'foo', 'bar'],
'y': ['foo', 'foo', 'foo'],
'z': ['foo', 'baz', 'foo']
})

我对 Pandas 没有经验,到目前为止我想出的最好的是相当笨重的 df[df.apply(lambda r: r.str.contains('b').any() , 轴=1)]。有更简单的解决方案吗?

重要的是,我想检查任何 列中的匹配项,而不是特定列。据我所知,其他类似的问题只针对单个列或列列表。

最佳答案

这个问题没有给出答案..但问题本身和评论已经有了答案,这对我来说非常有效..我在其他任何地方都找不到答案。

所以我只是复制粘贴了答案,以供可能觉得有用的人使用。我为不区分大小写的搜索添加了 case=False

来自@Reason 的解决方案:

到目前为止我想出的最好的是相当麻烦

这个对我有用。

df[df.apply(lambda r: r.str.contains('b', case=False).any(), axis=1)] 

来自@rbinnun 的解决方案:

这个对我来说适用于测试数据集..但对于一些真实数据集..它返回了如下所示的 unicode 错误,但我认为通常也是一个很好的解决方案

df[df.apply(lambda 行: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)

关于python - 选择 Pandas 数据框中任何列包含字符串的行的最简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com