You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas DataFrame的IP列提取非0.0.0.0的有效IP?

解决Pandas DataFrame中过滤IP列移除0.0.0.0的问题

你可以通过**apply结合列表推导式**来高效处理这个需求,直接在原列上完成拆分、过滤和合并的操作,完美得到你想要的结果。

完整代码实现

import pandas as pd

df = pd.DataFrame ({
    'IP':['10.140.34.210;0.0.0.0','0.0.0.0;0.0.0.0;10.0.1.87;0.0.0.0;0.0.0.0','0.0.0.0;172.31.48.174', '10.140.67.244;0.0.0.0', '1.1.1.1','3.3.3.3'],
})

# 核心处理逻辑
df['IP'] = df['IP'].apply(lambda x: ';'.join([ip for ip in x.split(';') if ip != '0.0.0.0']))

print(df)

输出结果

IP
0  10.140.34.210
1     10.0.1.87
2  172.31.48.174
3  10.140.67.244
4        1.1.1.1
5        3.3.3.3

逻辑拆解

  1. 拆分字符串:用x.split(';')把每个单元格的分号分隔IP拆成列表;
  2. 过滤无效IP:通过列表推导式[ip for ip in ... if ip != '0.0.0.0']剔除所有0.0.0.0;
  3. 合并有效IP:用';'.join()把过滤后的有效IP重新拼接成字符串,放回原列。

为什么你的split(expand=True)没达到预期?

这种方式会把拆分后的IP拆成多列,后续还要处理空值、筛选有效IP再合并,步骤更繁琐。而上面的方法直接在原列上完成所有操作,代码更简洁高效。

内容的提问来源于stack exchange,提问作者zimskiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 21:57:53