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

求助:批量提取POS标注元组首个元素并新增至数据列

批量提取POS标注二元组的首个元素并生成新列

针对你需要批量处理DataFrame中pos_tag_clean列,提取每个二元组首个元素并生成新列的需求,分两种场景给出解决方案:


场景1:pos_tag_clean列已是Python列表(元组组成的列表)

如果该列存储的是原生Python列表对象,直接用pandas的apply方法结合列表推导式即可批量处理:

import pandas as pd

# 构造与你数据结构一致的示例DataFrame
data = {
    'pos_tag_clean': [
        [('semoga', 'SC'), ('saja', 'RB'), ('di', 'IN'), ('sini', 'PR'), ('bisa', 'MD'), ('cepat', 'JJ'), ('cair', 'NN'), ('semoga', 'NN'), ('saja', 'RB'), ('ini', 'PR'), ('beneran', 'NN'), ('ada', 'VB'), ('nya', 'NN'), ('bantuan', 'NN'), ('buat', 'JJ'), ('butuh', 'VB'), ('banget', 'NN')],
        [('kak', 'VB'), ('kenapa', 'WH'), ('perbaikan', 'NN'), ('sistem', 'NN'), ('nya', 'PRP'), ('tidak', 'NEG'), ('selesai', 'VB')],
        [('sangat', 'RB'), ('baik', 'JJ')]
    ],
    'word_clean': [
        ['semoga', 'saja', 'di', 'sini', 'bisa', 'cepat', 'cair', 'semoga', 'saja', 'ini', 'beneran', 'ada', 'nya', 'bantuan', 'buat', 'butuh', 'banget'],
        ['kak', 'kenapa', 'perbaikan', 'sistem', 'nya', 'tidak', 'selesai'],
        ['sangat', 'baik']
    ]
}

df = pd.DataFrame(data)

# 提取每个元组的首个元素,生成新列pos_tags_extracted
df['pos_tags_extracted'] = df['pos_tag_clean'].apply(lambda x: [tup[0] for tup in x])

# 查看结果
print(df[['pos_tag_clean', 'pos_tags_extracted']])

场景2:pos_tag_clean列存储的是字符串格式的列表

如果该列是从文件读取的字符串(比如你表格中显示的[(semoga, SC), ...]格式),需要先将字符串转为Python列表对象,再提取元素:

import pandas as pd
import ast

# 构造字符串格式的示例DataFrame
data_str = {
    'pos_tag_clean': [
        "[(semoga, SC), (saja, RB), (di, IN), (sini, PR), (bisa, MD), (cepat, JJ), (cair, NN), (semoga, NN), (saja, RB), (ini, PR), (beneran, NN), (ada, VB), (nya, NN), (bantuan, NN), (buat, JJ), (butuh, VB), (banget, NN)]",
        "[(kak, VB), (kenapa, WH), (perbaikan, NN), (sistem, NN), (nya, PRP), (tidak, NEG), (selesai, VB)]",
        "[(sangat, RB), (baik, JJ)]"
    ],
    'word_clean': [
        ['semoga', 'saja', 'di', 'sini', 'bisa', 'cepat', 'cair', 'semoga', 'saja', 'ini', 'beneran', 'ada', 'nya', 'bantuan', 'buat', 'butuh', 'banget'],
        ['kak', 'kenapa', 'perbaikan', 'sistem', 'nya', 'tidak', 'selesai'],
        ['sangat', 'baik']
    ]
}

df_str = pd.DataFrame(data_str)

# 第一步:将字符串转为Python列表对象
df_str['pos_tag_clean'] = df_str['pos_tag_clean'].apply(ast.literal_eval)
# 第二步:提取每个元组的首个元素
df_str['pos_tags_extracted'] = df_str['pos_tag_clean'].apply(lambda x: [tup[0] for tup in x])

# 查看结果
print(df_str[['pos_tag_clean', 'pos_tags_extracted']])

说明

  • apply方法会遍历pos_tag_clean列的每一行数据,对每行的列表执行lambda函数中的逻辑
  • 列表推导式[tup[0] for tup in x]会逐个取出当前行列表中每个元组的第一个元素,组成新列表,最终赋值给新列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:15:35