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

基于OR条件选择DataFrame列的最优实现方法

可行实现方案

1. 优先匹配第一个存在的列(完全匹配or逻辑)

和你理想中的df['r' or 'radius']逻辑完全一致,按顺序判断候选列,取第一个存在的列:

df[next(col for col in ['r', 'radius', 'Radius[m]'] if col in df.columns)]

2. 筛选所有符合条件的列

如果需要把当前DataFrame内所有对应物理量的别名列都筛选出来,用pandas内置的filter方法更简洁:

精确匹配指定别名

df.filter(items=['r', 'radius', 'Radius[m]'], axis=1)

模糊匹配(不用穷举所有别名)

如果别名有规律(比如允许带单位后缀、大小写不敏感),可以用正则匹配,减少别名枚举量:

# 匹配r、radius、Radius[m]、r[mm]等格式的列名
df.filter(regex=r'^(r|radius)(\[[a-zA-Z]+\])?$', axis=1, case=False)

如果筛选后只有1列,想要和直接取列的效果一致返回Series,在末尾添加.squeeze('columns')即可:

df.filter(items=['r', 'radius'], axis=1).squeeze('columns')

3. 封装成工具函数(使用体验最接近理想写法)

如果需要频繁做该操作,封装后调用的语法几乎和你设想的完全一致:

def get_phy_col(df, *aliases):
    return df[next(col for col in aliases if col in df.columns)]

# 调用示例
get_phy_col(df, 'r', 'radius')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:03