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') ``` |