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

Python中能否通过比对Pandas DataFrame列生成目标单词列表?

当然可以实现这个需求!我来给你一步步拆解怎么做,还会附上可直接运行的代码示例:

实现步骤与代码示例

1. 先构造示例数据

先创建一个符合你描述的DataFrame,方便快速测试效果:

import pandas as pd

# 构造示例DataFrame:第一列是root_word,最后两列是待比对的单词列
data = {
    'root_word': ['apple', 'banana', 'cherry', 'date'],
    'word_col1': ['apple', 'orange', 'cherry', 'elderberry'],
    'word_col2': ['grape', 'banana', 'fig', 'date']
}
df = pd.DataFrame(data)

2. 方法一:逐行遍历检查(直观易懂)

这种方式逻辑清晰,适合刚接触Pandas的朋友,容易理解每一步的操作:

new_word = []

def check_matching_words(row):
    current_root = row['root_word']
    # 获取当前行的最后两列单词
    words_to_check = row[-2:]
    for word in words_to_check:
        # 这里判断单词是否等于对应行的root_word,若需要"包含"关系可改成 `word in current_root`
        if word == current_root:
            new_word.append(word)

# 把检查函数应用到DataFrame的每一行
df.apply(check_matching_words, axis=1)

print(new_word)
# 输出结果: ['apple', 'banana', 'cherry', 'date']

3. 方法二:矢量化操作(高效适合大数据)

如果你的DataFrame数据量很大,推荐用Pandas的矢量化操作——它比逐行循环快得多,性能优势会非常明显:

# 提取DataFrame的最后两列
last_two_columns = df.iloc[:, -2:]
# 逐元素比较最后两列的单词是否等于对应行的root_word
match_mask = last_two_columns.eq(df['root_word'], axis=0)
# 提取所有匹配的单词并转成列表
new_word = last_two_columns[match_mask].stack().tolist()

print(new_word)
# 输出结果和上面一致: ['apple', 'banana', 'cherry', 'date']

灵活调整判断逻辑

如果你的root_word列不是单个单词,而是包含多个单词的列表(比如root_word: [['apple', 'fruit'], ['banana']]),只需要把判断条件改成:

# 针对root_word是列表的情况
if word in current_root:
    new_word.append(word)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:15