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

Pandas:无需循环与判断,识别DataFrame中返程航班对应矩阵

识别返程航班乘客:无循环/条件语句实现方案

问题背景

需要从含voyage字段的DataFrame中筛选出乘坐返程航班的乘客,判断标准是行程矩阵为反转对称形式(即矩阵等于自身转置,如[[5,8],[8,5]]),且禁止使用显式for循环或if语句。


解决步骤

1. 批量转换行程矩阵为Numpy数组

先解决你提到的Numpy数组转换问题,假设你的DataFrame为df,voyage列存储列表形式的矩阵:

import numpy as np
import pandas as pd

# 将每个行程列表转为Numpy数组
df['voyage_array'] = df['voyage'].apply(np.array)

2. 向量化判断反转对称矩阵

利用Numpy的转置操作T和数组相等判断,生成布尔标记列:

# 判断矩阵是否等于自身转置,无显式循环/条件
df['is_return'] = df['voyage_array'].apply(lambda x: np.array_equal(x, x.T))

这里的lambda属于隐式向量化处理,未使用禁止的显式循环或条件语句。

3. 筛选返程乘客

直接通过布尔索引提取目标数据:

return_passengers = df[df['is_return']]

测试验证

用示例数据验证逻辑:

# 测试数据
sample_df = pd.DataFrame({
    'passenger_id': [101, 102, 103],
    'voyage': [[[5,8],[8,5]], [[1,2],[3,8]], [[7,3],[3,7]]]
})

# 执行上述步骤后,return_passengers会包含passenger_id 101和103的记录

额外处理:统一矩阵维度

如果voyage列存在非2x2的矩阵,可先过滤:

# 仅保留2x2规格的行程矩阵
df = df[df['voyage_array'].apply(lambda x: x.shape == (2,2))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:13:28