You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python pandas遍历keywords列的for循环未覆盖df全部行问题咨询

问题原因
  • 外层循环逻辑错误:你写的for p in df.loc[i, 'keywords']并不是遍历df的所有行,for循环的迭代对象会在循环启动前完成计算,初始i=0时会先取第0行的keywords字符串,外层循环实际是在遍历这个字符串的每一个字符,循环总次数等于该字符串的长度,远小于df的总行数,所以只会处理前N行数据后就停止。
  • 冗余逻辑问题:内层循环不需要额外定义u变量计数,逐行调用loc[len(df1)]插入数据的执行效率极低,仅适合极小数据量场景。
  • 拆分结果瑕疵:原拆分逻辑没有清理关键词前后的方括号、引号、逗号,得到的词存在大量冗余符号。
修复代码

修正循环写法

import pandas as pd
import re

df1 = pd.DataFrame(columns=['word'])
# 外层遍历所有行索引
for idx in range(len(df)):
    kw_str = df.loc[idx, 'keywords']
    # 先清理所有多余的括号、引号、逗号
    cleaned_kw = re.sub(r"[\[\]'\",]", "", kw_str)
    # 按空格拆分关键词
    word_list = cleaned_kw.split()
    for word in word_list:
        df1.loc[len(df1)] = {"word": word}

print(df1)

更高效的pandas向量化写法(无需手动写循环)

import pandas as pd

df1 = (
    df["keywords"]
    # 清理多余符号
    .str.replace(r"[\[\]'\",]", "", regex=True)
    # 按空格拆分
    .str.split()
    # 展开列表为单独行
    .explode()
    # 重置索引
    .reset_index(drop=True)
    # 转为DataFrame并重命名列
    .to_frame(name="word")
)

print(df1)

内容的提问来源于stack exchange,提问作者Robin5454

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:39:03