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

如何在DataFrame中获取每行最后一个值及对应列名?

嘿,我来帮你搞定这个问题!要同时拿到DataFrame每行的最后一个值和对应的列名,用Pandas的工具就能轻松实现,我给你分两种常见场景说明:

场景1:取每行最后一列的列名和值(不考虑缺失值)

如果你的需求是直接获取每行最右侧列的数值和列名,代码可以这么写:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [40, 50, 60],
    'C': [70, 80, 90]
})

# 方法1:单独生成两列分别存储列名和值
df['last_column_name'] = df.columns[-1]
df['last_column_value'] = df.iloc[:, -1]

# 方法2:把结果合并成元组列
df['last_info'] = df.apply(lambda row: (row.index[-1], row.iloc[-1]), axis=1)

这里df.columns[-1]直接拿到最后一列的列名,iloc[:, -1]取出最后一列的所有行值;用apply加lambda则可以逐行打包列名和值。

场景2:取每行最后一个非缺失值的列名和值(处理空值场景)

如果你的DataFrame存在缺失值,需要定位每行最后一个非空值的位置,就用这个方案:

import pandas as pd

# 构造带缺失值的示例DataFrame
df = pd.DataFrame({
    'A': [1, None, 3],
    'B': [None, 5, 6],
    'C': [7, 8, None]
})

# 定义函数,返回每行最后一个非缺失值的列名和值
def get_last_valid(row):
    last_col = row.last_valid_index()
    if last_col is not None:
        return (last_col, row[last_col])
    return (None, None)  # 整行都是空值时的返回值,可按需调整

# 应用到每行,生成合并列
df['last_valid_info'] = df.apply(get_last_valid, axis=1)

# 拆分成分开的列(可选)
df[['last_valid_col', 'last_valid_value']] = df['last_valid_info'].apply(pd.Series)

这里的last_valid_index()是Pandas的实用方法,它会返回该行最后一个非缺失值对应的列名;配合row[last_col]就能拿到对应的值。如果整行都是空值,我们返回(None, None),你可以根据业务需求修改这个默认返回逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:28:12