我决定使用BeautifulSoup从Pandas列中提取字符串整数。BeautifulSoup在一个简单的例子中运行良好,但是在Pandas中的列表列中不起作用。我找不到任何错误。你能帮忙吗?
输入:
df = pd.DataFrame({
"col1":[["<span style='color: red;'>9</span>", "abcd"], ["a", "b, d"], ["a, b, z, x, y"], ["a, y","y, z, b"]],
"col2":[0, 1, 0, 1],
})
for list in df["col1"]:
for item in list:
if "span" in item:
soup = BeautifulSoup(item, features = "lxml")
item = soup.get_text()
else:
None
print(df)
预期输出:
df = pd.DataFrame({
"col1":[["9", "abcd"], ["a", "b, d"], ["a, b, z, x, y"], ["a, y","y, z, b"]],
"col2":[0, 1, 0, 1],
})
2条答案
按热度按时间dldeef671#
您尝试在Series上使用for循环进行迭代,但在使用Pandas时,更好且更简单的方法是使用
apply
函数,如下所示:或者你可以用列表解析法把它写成一行:
ws51t4hk2#
这会将
extract_integer
函数应用于col1
列的每个元素,如果元素包含"span"
标记,则用提取的整数替换原始值,如果元素不包含"span"
标记,则保持值不变。输出: