You need to enable JavaScript to run this app. 在pandas apply函数中获取行索引与列名格式化单元格值的方法
优惠活动
大模型
产品
解决方案
定价
更多

在pandas apply函数中获取行索引与列名格式化单元格值的方法

实现方案

你可以在按行apply的逻辑中,调用行Series的items()方法遍历列名与对应单元格值,实现需求,示例代码如下:

import pandas as pd

df = pd.DataFrame({
    'X': [1,2,3,4,5],
    'Y': [3,4,5,6,7],
    'Z': [5,6,7,8,9]}, index=['a', 'b', 'c', 'd', 'e'])

# apply实现逻辑
result = df.apply(
    lambda row: pd.Series(
        [f"({row.name}, {col}), {val}" for col, val in row.items()],
        index=row.index
    ),
    axis=1
)

print(result)

运行后输出和你预期完全一致:

X          Y          Z
a  (a, X), 1  (a, Y), 3  (a, Z), 5
b  (b, X), 2  (b, Y), 4  (b, Z), 6
c  (c, X), 3  (c, Y), 5  (c, Z), 7
d  (d, X), 4  (d, Y), 6  (d, Z), 8
e  (e, X), 5  (e, Y), 7  (e, Z), 9

如果不需要字符串格式,要保留元组结构的话,把列表推导式的内容替换为((row.name, col), val)即可:

result = df.apply(
    lambda row: pd.Series(
        [((row.name, col), val) for col, val in row.items()],
        index=row.index
    ),
    axis=1
)

逻辑说明

  • 按行apply时传入的row是代表单行数据的Series对象,row.name属性为当前行的索引值
  • row.items()会迭代返回当前行所有(列名, 单元格值)的键值对,直接就能拿到你需要的对应单元格的列名
  • 最后将生成的列表转为Series并指定与原行一致的索引,即可保留原DataFrame的列结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 02:57:04