如何将整个列作为参数传递给tldextract函数?

时间:2018-07-15 11:11:35

标签: python-3.x

tldextract用于从URL中提取域名。此处,“ url”是数据框“ df”中的列名称之一。可以将“ url”的一个值作为参数传递。但是,我无法将整个列作为参数传递。 在此处传递的网址是“ https://www.google.com/search?source=hp&ei=7iE

listed = tldextract.extract(df['url'][0])
dom_name = listed.domain
print(dom_name)

输出: 谷歌

我想要的是在名为“域”的数据框中创建一个新列,其中具有从URL中提取的域名。

类似的东西:

df['Domain'] = tldextract.extract(df['url'])

但这不起作用

代码如下:

# IMPORTING PANDAS
import pandas as pd
from IPython.display import display

import tldextract

# Read data sample
df = pd.read_csv("bookcsv.csv")

df['Domain'] = df['url'].apply(lambda url: tldextract.extract(url).domain)

以下是输入数据:

The dataframe looks like this 我无法将数据直接放在这里。所以,我要发布快照。

1 个答案:

答案 0 :(得分:0)

使用apply with将功能应用于列中的每个元素,并将使所有内容整齐地排列。

module Radians
  refine Math.singleton_class do
    def radians(degrees)
      degrees * Math::PI / 180
    end
  end
end

这是我用于测试的完整代码:

df['Domain'] = df['url'].apply(lambda url: tldextract.extract(url).domain)

输出:

import pandas as pd, tldextract

df = pd.DataFrame([{'url':'https://google.com'}]*12)
df['Domain'] = df['url'].apply(lambda url: tldextract.extract(url).domain)
print(df)