Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 是否将列添加到由函数创建的数据帧?_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 是否将列添加到由函数创建的数据帧?

Python 3.x 是否将列添加到由函数创建的数据帧?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,有一个csv文件,其中包含以下URL: 1;https://www.one.de 2;https://www.two.de 3;https://www.three.de 4;https://www.four.de 5;https://www.five.de 然后我将其加载到一个数据帧df cols = ['nr','url'] df = pd.read_csv("listing.csv", sep=';', encoding = "utf8", dt

有一个csv文件,其中包含以下URL:

1;https://www.one.de 
2;https://www.two.de 
3;https://www.three.de
4;https://www.four.de
5;https://www.five.de
然后我将其加载到一个数据帧df

cols = ['nr','url']
df = pd.read_csv("listing.csv", sep=';', encoding = "utf8", dtype=str, names=cols)
然后我想添加另一个col‘domain_name’,对应于nr

def takedn(url):
    m = urlsplit(url)
    return m.netloc.split('.')[-2]

df['domain_name'] = takedn(df['url'].all())
print(df.head())
但所有nr都使用最后一个域名

Output:
  nr                   url domain_name
0  1    https://www.one.de        five
1  2    https://www.two.de        five
2  3  https://www.three.de        five
3  4   https://www.four.de        five
4  5   https://www.five.de        five
我试着学习矢量化。
它不会像我想的那样起作用。第一行域名应该是1,第二行是2,依此类推。

要对元素进行操作,可以使用
apply()

def takedn(url): m=URLSPILT(url) 返回m.netloc.split('.')[-2] df['domain_name']=df['url']。应用(takedn)
要对元素进行操作,可以使用
apply()

def takedn(url): m=URLSPILT(url) 返回m.netloc.split('.')[-2] df['domain_name']=df['url']。应用(takedn)
我们在
tldextract

import tldextract
df['domain'] = df.url.map(lambda x : tldextract.extract(x).domain)
df
   nr                   url domain_name domain
0   1    https://www.one.de        five    one
1   2    https://www.two.de        five    two
2   3  https://www.three.de        five  three
3   4   https://www.four.de        five   four
4   5   https://www.five.de        five   five

我们在
tldextract

import tldextract
df['domain'] = df.url.map(lambda x : tldextract.extract(x).domain)
df
   nr                   url domain_name domain
0   1    https://www.one.de        five    one
1   2    https://www.two.de        five    two
2   3  https://www.three.de        five  three
3   4   https://www.four.de        five   four
4   5   https://www.five.de        five   five

谢谢,完美的回答。有关于矢量化的好教程或解释吗?只是为了理解。@orgen不知道矢量化是什么意思。但有一本书叫《教你如何使用熊猫来处理数据》。在这里找到了一个矢量化链接:@orgen,它似乎与熊猫无关。但是如果你主要想在熊猫身上应用函数。主要有三个功能
apply
map
applymap
。关于它们之间的区别,你可以参考。谢谢,完美的答案。有关于矢量化的好教程或解释吗?只是为了理解。@orgen不知道矢量化是什么意思。但有一本书叫《教你如何使用熊猫来处理数据》。在这里找到了一个矢量化链接:@orgen,它似乎与熊猫无关。但是如果你主要想在熊猫身上应用函数。主要有三个功能
apply
map
applymap
。关于它们之间的区别,您可以参考。