pandas 获取不符合条件/不包含某个字符串的dataframe

工作中处理数据时,常需筛选DataFrame。可直接调用pandas的相关函数,用‘|’隔开包含的多个字符串,加‘~’取不包含的数据。不过contains函数处理文本型数据有局限,遇多条件时可按特定方法操作,还能用正则表达式指定匹配原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作中数据的处理中往往会遇到筛选出不符合条件的或者不包含某个字符的dataframe,我们会如何去做呢?

可能你会想到用python写一个函数,然后用panda的apply函数或者map函数来进行处理,不可否认这是一中方法,但是实际上pandas中已经给我们开发了这样的函数,那我们为什么不直接调用呢?

首先看一下,怎么筛选出包含某些字符串的数据

#这是使用语法,模糊匹配
df[ df['通信名称'].str.contains('联通|移动|小灵通|电信')]

#这一种方法不是匹配,而是等于后面列表中的值,要注意区别
df[ df['通信名称'].isin(['联通','移动','小灵通','电信'])]

包含的字符串比较多时就用’|‘管道符隔开

那取出不包含这些字符串的数据怎么操纵呢,很简单,就是在前面加上一个~这种波浪符号就可以了

df[~ df['通信名称'].str.contains('联通|移动|小灵通|电信')]

没错就是这么简单的操作,但是contains也有一个不好的地方,就是如果某一列数据时文本型数据,处理起来就不是那么完美,因为contains函数类似于模糊查询,所以会出现错误匹配或者超出我们需要的匹配范围

问题又来了如果我们的条件是多个怎么办呢?

我们就需要这样来做

df[ df['通信名称'].str.contains('联通|移动|小灵通|电信') | df['通信备注'].str.contains('公告|活动|提示|优惠') ]
或者这样写
df[df["col1"].str.contains('this|that')==False and df["col2"].str.contains('foo|bar')==True]


当然,到哪里都离不开的正则表达式在这里也是可以用的

pattern=r'.*?'
df[df[columns].str.contains(pattern)]




这样你就可以根据自己的需求快乐的指定匹配原则了。

### 如何修复群晖 NAS 存储空间损坏的问题及解决方案 #### 使用备用硬盘恢复文件 当检测到某文件存在问题时,可以优先考虑使用NAS中的第二块硬盘(即存储空间2)来进文件恢复操作。由于这块硬盘上的数据通常与原始文件最为接近,并保存着多个版本的历史记录,这使得它成为首选的恢复途径[^1]。 ```bash # 假设通过File Station进手动恢复 ssh admin@nas_ip_address cd /volume2/path_to_backup/ cp -r file_or_directory_to_restore /destination_path/ # 如果采用Hyper Backup,则需登录DSM界面执相应步骤 ``` #### 实施异地备份策略预防未来风险 为了避免因本地灾难而造成可逆的数据损失,建议实施异地备份方案。对于缺乏额外物理设施的情况来说,云端是一个错的选择;而对于那些已经具备一定基础设施的人来说,在同地点之间共享资源也是一种有效方式。无论哪种方法都应确保目标位置远离原NAS所在之处以降低共同受灾几率[^2]。 #### 处理Linux环境下受损磁盘的具体措施 如果遇到的是基于Linux系统的Synology设备上发生的特定类型的硬件故障——比如软RAID格式遭到破坏的情形下,那么就需要深入分析系统日志来定位问题根源并采取针对性动。例如,针对`/dev/md2` RAID崩溃事件,可以通过重建受影响分区的方式来尝试解决问题[^3]: ```bash mdadm --stop /dev/md2 mdadm --create /dev/md2 --level=5 --raid-devices=3 \ /dev/sda3 missing /dev/sdc3 mkfs.ext4 /dev/md2 mount /dev/md2 /mnt/recovery_point rsync -avz /path/to/source_data/ /mnt/recovery_point/ umount /mnt/recovery_point ``` > **注意**: 上述命令仅为示例用途,请务必先做好充分准备再实际操作! #### 设置定期快照保护重要资料免受侵害 最后但同样重要的一步就是启用自动化的快照功能。这样即使遭遇突发状况也能快速回滚至最近一次正常状态下的副本,从而最大限度减少损害范围。此特性尤其适用于防范恶意软件感染或其他形式的人为错误所引发的风险[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值