![]() | 1 badacook OP 居然是使用&,明明 python 中逻辑运算符 不包含这个啊,测试有效 result = result.loc[(result["code"].str.contains(pat1)) & (result["code_name"].str.contains(pat2))] 不知道 各位 还有没有其他行之有效的方法 实现 pandas 数据的并列筛选 |
![]() | 2 noqwerty 2021-03-23 21:11:20 +08:00 文档里都写了的: https://pandas.pydata.org/docs/getting_started/intro_tutorials/03_subset_data.html#how-do-i-filter-specific-rows-from-a-dataframe 如果没有同时筛选列的话还可以把你的.loc 去掉 |
![]() | 4 bigtan 2021-03-23 22:59:13 +08:00 np.logical_and/or 我比较喜欢这个 |
![]() | 5 badacook OP |
![]() | 6 badacook OP @noqwerty 非常感谢你分享的文档链接,哈哈哈其实今天是第一天 开始用 pandas 库,API 文档都是 今天别人分享给我后查到这么处理的,要是早看到 你的分享 就不用试这么久了,还是非常感谢了 |
![]() | 7 noqwerty 2021-03-24 00:23:26 +08:00 @badacook #5 result[(result["code"].str.contains(pat1)) & (~result["code_name"].str.contains(pat2))] |
![]() | 8 badacook OP @noqwerty 非常感谢啊 还有一列 数据格式为 str,类似 datetime.datetime.now().strftime("%Y/%m/%d")格式 实例如下:不知道能不能 将这个 str 转换为 一个可运算的 datetime 对象,从而对该列进行筛选 ipoDate 1990/12/10 1991/1/29 不知有何好的方法啊,还望不吝赐教 |
![]() | 9 noqwerty 2021-03-24 00:48:26 +08:00 @badacook #8 真的建议你好好翻一下文档 Google 出来的前两条都是你要的答案 https://stackoverflow.com/questions/26763344/convert-pandas-column-to-datetime |
![]() | 10 badacook OP @noqwerty 哈哈哈 昨天有看文档 都是 展示的 datetime 数据格式化输出的,就想到了问大佬了 多谢大佬 最近可能是 google 不太好使,就忘了这一茬了,一定改正 改正 |
![]() | 11 bigtan 2021-03-24 08:27:45 +08:00 numpy.logical_not |
![]() | 12 lizliz 2021-03-24 09:02:18 +08:00 取反就是~ |
13 zyb201314 2021-03-24 09:52:48 +08:00 via Android print(result[result.code.str.contains("sz")&result.code_name.str.contains("B")]) |
14 princelai 2021-03-24 10:08:44 +08:00 ()&()方法更常用,query 方法只有在不加 engine='python'参数下才会更快,没办法,你这个必须用这样的。 ``` result =result("code.str.contains(pat1) and code_name.str.contains(pat2)",engine='python') ``` |
15 princelai 2021-03-24 10:09:27 +08:00 @princelai #14 上面写错了 ``` result =result.query("code.str.contains(pat1) and code_name.str.contains(pat2)",engine='python') ``` |