在Dataframe中创建一个新列,从URI提取域

2024-06-11 14:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我为这个任务编写的代码工作得很好,但我知道它不是最具python风格的,所以我正在寻找一些建议。我有一个日志文件的数据框架,其中一列有完整的URL(主机名+路径等)。我编写了以下代码来提取域:

    # Generate domain column from uri
    import uritools  
    domain = [] 
    for value in df['uri']: 
        try:
            nuri = [uritools.urisplit(value).authority if uritools.isuri(value) else value]
            domain.append(nuri) 
        except:
            domain.append(None)
    df['domain'] = domain

正如我所说,这是可行的,但它很丑陋。输出很好,但当我试图将其调整为一行时,它不起作用。以下是我尝试过的:

df['domain'] = [uritools.urisplit(df.uri).authority if uritools.isuri(df.uri) else df.uri]

我得到的错误是:

TypeError: expected string or bytes-like object

我怎样才能改进它使之更合适


Tags: 代码dfifvalue风格domainurielse
1条回答
网友
1楼 · 发布于 2024-06-11 14:20:24

您需要为列表理解提供一个iterable

df['domain'] = [uritools.urisplit(uri).authority if uritools.isuri(uri) else uri for uri in df.uri]

注意df.uri只出现在行的末尾

相关问题 更多 >