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

如何在宽格式DataFrame中提取Volume.1与最大Volume值列

解决方案

构造示例数据

先还原你的原始DataFrame,方便测试:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Subject': [1, 2, 3, 4],
    'Volume.1': [77, 65, 98, 66],
    'Volume.2': [22, 182, np.nan, 76],
    'Volume.3': [1, np.nan, np.nan, 145],
    'Volume.4': [np.nan, np.nan, np.nan, 677]
})

符合你期望结果的代码

从你的输出结果来看,实际需求是提取Volume.2至Volume.4的最大值(忽略NA),代码如下:

# 新增列:计算Volume.2到Volume.4的每行最大值
df['最大Volume值'] = df[['Volume.2', 'Volume.3', 'Volume.4']].max(axis=1, skipna=True)
# 保留需要的列
result_df = df[['Subject', 'Volume.1', '最大Volume值']]

执行后得到的结果和你期望的一致:

SubjectVolume.1最大Volume值
17722.0
265182.0
398NaN
466677.0

如果需求是包含Volume.1的最大值

若你确实需要计算Volume.1至Volume.4的最大值,只需调整列选择范围:

df['最大Volume值'] = df.filter(regex='Volume\.\d').max(axis=1, skipna=True)
result_df = df[['Subject', 'Volume.1', '最大Volume值']]

此时行1的最大值会是77.0,行3的最大值会是98.0,更符合字面描述的需求。

代码说明

  • max(axis=1):指定按行计算最大值,默认是按列;
  • skipna=True:自动忽略NA值,若某行所有列都是NA,结果返回NA;
  • filter(regex='Volume\.\d'):用正则表达式匹配所有以Volume.开头的列,适合列数较多的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:30:32