从数据框中解析 url
Parsing urls from a dataframe
我正在尝试从数据框中解析 url 以获取 'path'。我的数据框有 3 列:['url']、['impressions']、['clicks']。我想用他们的路径替换所有的网址。这是我的代码:
import csv
from urllib.parse import urlparse
fic_in = 'file.csv'
df = pd.read_csv(fic_in)
obj = urlparse(df['url'])
df['url'] = obj.path
print(df)
csv 文件包含数千个 url 和其他 2 列有关 url 的信息。由于技术原因,我无法解析操作 csv 的 url,但我必须在数据框中解析它们。
当我执行这段代码时,出现以下我不太理解的错误:
File "/Users/adamn/Desktop/test_lambda.py", line 33, in <module>obj = urlparse(df['url'])
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 389, in urlparse
url, scheme, _coerce_result = _coerce_args(url, scheme)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 125, in _coerce_args
return _decode_args(args) + (_encode_result,)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 109, in _decode_args
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 109, in <genexpr>
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/generic.py", line 1442, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我确实遇到了错误,所以我在做什么是不可能的?我该如何解决它或使用其他方法来完成它?
感谢您的帮助。
urlparse 一次只接受一个字符串,而不是一系列。
尝试:
df["URL"] =df["URL"].astype(str).apply(lambda x: urlparse(x).path)
我正在尝试从数据框中解析 url 以获取 'path'。我的数据框有 3 列:['url']、['impressions']、['clicks']。我想用他们的路径替换所有的网址。这是我的代码:
import csv
from urllib.parse import urlparse
fic_in = 'file.csv'
df = pd.read_csv(fic_in)
obj = urlparse(df['url'])
df['url'] = obj.path
print(df)
csv 文件包含数千个 url 和其他 2 列有关 url 的信息。由于技术原因,我无法解析操作 csv 的 url,但我必须在数据框中解析它们。 当我执行这段代码时,出现以下我不太理解的错误:
File "/Users/adamn/Desktop/test_lambda.py", line 33, in <module>obj = urlparse(df['url'])
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 389, in urlparse
url, scheme, _coerce_result = _coerce_args(url, scheme)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 125, in _coerce_args
return _decode_args(args) + (_encode_result,)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 109, in _decode_args
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/parse.py", line 109, in <genexpr>
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File"/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/generic.py", line 1442, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我确实遇到了错误,所以我在做什么是不可能的?我该如何解决它或使用其他方法来完成它?
感谢您的帮助。
urlparse 一次只接受一个字符串,而不是一系列。
尝试:
df["URL"] =df["URL"].astype(str).apply(lambda x: urlparse(x).path)