如何提取Pandas DataFrame列表列中指定值对应的下一个元素
解决方案
核心思路
遍历每行的列表,定位目标值的索引,判断索引位置后返回后邻元素或空列表,通过apply方法批量处理整列数据。
完整实现代码
import pandas as pd # 构造测试DataFrame(实际使用时替换为你自己的DataFrame即可) df = pd.DataFrame({ 'lists': [ ['a', 'b', 'c', 'd'], ['c', 'b', 'a', 'e'], ['a', 'e', 'f', 'b'] ] }) # 定义要查找的目标值 target = 'b' # 定义获取后邻元素的函数 def get_next(lst, target_val): target_idx = lst.index(target_val) return lst[target_idx + 1] if target_idx < len(lst) - 1 else [] # 生成新列 df['next_element'] = df['lists'].apply(lambda x: get_next(x, target))
输出结果
运行上述代码后df的输出和你给出的示例完全一致:
lists next_element 0 [a, b, c, d] c 1 [c, b, a, e] a 2 [a, e, f, b] []
补充说明
- 题目已明确所有列表都包含目标值,因此不需要额外处理
list.index()找不到目标值抛出的ValueError异常 - 上述代码默认返回目标值第一次出现的后邻元素,如果你的场景中列表可能存在多个目标值,需要返回最后一次出现的后邻元素,将函数中
target_idx = lst.index(target_val)替换为以下代码即可:target_idx = len(lst) - 1 - lst[::-1].index(target_val)
内容的提问来源于stack exchange,提问作者Jorge A. Salazar
相关产品推荐
相关产品推荐

