如何提取pandas混合单值与列表的列的末尾元素生成新列
你可以通过apply()配合类型判断实现需求,完整代码如下:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame([ (142, [1,2]), (144, 3), (144, 1), (142, 1), (142, [1,3]), (144, [1,5]), (142, 2) ], columns=['ID', 'Column_1']) # 自定义处理函数:列表取最后一位,非列表直接返回 def extract_value(x): if isinstance(x, list): return x[-1] return x df['new_column'] = df['Column_1'].apply(extract_value)
如果偏好更简洁的写法,可以直接用lambda表达式实现:
df['new_column'] = df['Column_1'].apply(lambda x: x[-1] if isinstance(x, list) else x)
如果你的数据中还存在元组等其他需要取最后一位的可迭代类型,可以把判断条件替换为pd.api.types.is_list_like(x),适配更多场景。
内容的提问来源于stack exchange,提问作者Parsifal
相关产品推荐
相关产品推荐

