Python 从包含IP地址的数据集中删除行

Python 从包含IP地址的数据集中删除行,python,pandas,Python,Pandas,我正在处理一个请求url数据集(字符串),它在一个示例中看起来像这样: df request_url count 0 https://login.microsoftonline.com 24521 1 https://dt.adsafeprotected.com 11521 2 http://209.53.113.23/ 22521

我正在处理一个请求url数据集(字符串),它在一个示例中看起来像这样:

df
  request_url                                  count
0 https://login.microsoftonline.com            24521
1 https://dt.adsafeprotected.com               11521
2 http://209.53.113.23/                        225211
3 https://googleads.g.doubleclick.net          6252
4 https://fls-na.amazon.com                    65225 
5 https://v10.vortex-win.data.microsoft.com    7852222 
6 https://ib.adnxs.com                         12
7 http://177.41.65.207/read.txt                188 
期望输出:

newdf
  request_url                                  count
0 https://login.microsoftonline.com            24521
1 https://dt.adsafeprotected.com               11521
2 https://googleads.g.doubleclick.net          6252
3 https://fls-na.amazon.com                    65225
4 https://v10.vortex-win.data.microsoft.com    7852222
5 https://ib.adnxs.com                         12

然后我将在数据上使用tld库。我想去掉这些的原因是因为tld库不知道如何处理域中的IP。有没有一种简单的方法可以从包含IP地址的数据帧中删除行?

您可以使用正则表达式检查
findall
(?:\.[0-9]+){3},
astype
bool将所有空列表转换为
False

df[~df.request_url.str.findall(r'[0-9]+(?:\.[0-9]+){3}').astype(bool)]
Out[908]: 
                                 request_url
0          https://login.microsoftonline.com
1             https://dt.adsafeprotected.com
3        https://googleads.g.doubleclick.net
4                  https://fls-na.amazon.com
5  https://v10.vortex-win.data.microsoft.com
6                       https://ib.adnxs.com

创建一个函数来检查每一行并根据结果进行筛选:

import re

def hasip(row):
    return re.match(r"http://\d+\.\d+\.\d+\.\d+", row["request_url"]) is None

newdf = df[df.apply(hasip, axis=1)]