跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • pandas 行筛选
未分類
30 3 月 2021

pandas 行筛选

pandas 行筛选

資深大佬 : badacook 1

请教一下大家
在 DataFrame 进行行筛选时 一般使用 DataFrame.loc 方法,指定列标签,或者通过列的表达式传入一组 boolean array
如果要 DataFrame 行列比较多,该如何筛选包含指定 字符串的行呢,是通过 pandas.DataFrame.iterrows()对行数据进行历遍匹配
还是有什么其他的好方法没? 以下简单实例 筛选包含 字符’a’的行
df = pd.DataFrame([[“x(a)”,”(ab)”,”c”,”d”],[“m”,”2b”,”2x(3)y”,”d”],[“a”,”n”,”c”,”4(n)e”]])

再就是 不知有没有 pandas 定位检索、增删改查的 cookbook 类的资料可以参考,
还有一个小问题 就是将 DataFrame.applymap(str) 处理时 遇到数值型,结尾含 0 的,直接给去掉了,有没有办法转化是保留

大佬有話說 (9)

  • 資深大佬 : imn1

    搜“pandas 像写 sql”能找到一篇文章

    类型问题,处理前 astype 转换一下

  • 主 資深大佬 : badacook

    @imn1
    谢谢大神的提点 那篇文章有搜到过 看过一部分
    结合这个 问题我想起来了 apply()相关函数 包含多列处理,返回的是 DataFrame,
    可以将 DataFrame.T 对所有行变换成列,返回相关列也就是本身的行,只是需要自定义判断函数
    之前看到了 DataFrame.query 函数 也是返回 DataFrame 列,就是其中的 boolean expression 感觉到不到效果
    再次感谢 大神的 astype 指点。

  • 資深大佬 : wuwukai007

    df.loc[(df == ‘a’).any()]

  • 主 資深大佬 : badacook

    @wuwukai007 试过了 完全不对啊

  • 資深大佬 : v2sir

    要不你先 df.T 一下 ? 逃~

  • 資深大佬 : wanv1171

    pd.Series.str.contains()

    https://pandas.pydata.org/docs/reference/api/pandas.Series.str.contains.html

  • 資深大佬 : wanv1171

    没注意是筛选行,那应该这样 df[df.apply(lambda r: r.str.contains(‘b’, case=False).any(), axis=1)]

    https://stackoverflow.com/questions/38980514/most-concise-way-to-select-rows-where-any-column-contains-a-string-in-pandas-dat/43018248

  • 主 資深大佬 : badacook

    @wanv1171 非常感谢,Series.str.contains(),与 apply lambda 这种方式 这几天都一直在用,就是这几种结合 any 函数没组合使用过,真香啊,感谢感谢,致敬

  • 資深大佬 : HelloViper

    series.str.contains 呀,你连续问的问题都是 str 列的内置方法

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具