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

如何从DataFrame的window列列表中移除对应Student列的同名值

解决Pandas中移除每行window列表对应Student元素的问题

原始DataFrame定义

import pandas as pd
df = pd.DataFrame(
    {
       "Student": ['Scooby','Daphne','Shaggy','Fred'],
       "window": [['Scooby','Daphne'], ['Daphne','Velma','Scrappy'], ['Daphne','Shaggy','Fred'],['Fred','Velma','Scrappy']]
    }
)

原始输出

Student                    window
0  Scooby          [Scooby, Daphne]
1  Daphne  [Daphne, Velma, Scrappy]
2  Shaggy    [Daphne, Shaggy, Fred]
3    Fred    [Fred, Velma, Scrappy]

需求

移除每行window列列表中与对应Student列相同的元素,期望结果:

Student                    window
0  Scooby                  [Daphne]
1  Daphne          [Velma, Scrappy]
2  Shaggy            [Daphne, Fred]
3    Fred          [Velma, Scrappy]

问题原因

你之前的代码只单独对window列调用apply,无法获取当前行对应的Student值——df['Student']是整个列的Series,不是单一行的元素,所以无法精准匹配过滤。

解决方案

使用df.apply()按行处理,同时获取当前行的Student和window值:

df['window'] = df.apply(lambda row: [item for item in row['window'] if item != row['Student']], axis=1)
  • axis=1参数指定按行遍历处理
  • lambda函数中,row['Student']取当前行的学生名,row['window']取当前行的列表,通过列表推导式过滤掉与学生名相同的元素
  • 这种方式会生成新列表,不会修改原始列表,避免潜在的副作用

执行上述代码后即可得到期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:25:01