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

如何在Pandas中根据布尔值将列名转换为对应值?

解决方案

你可以通过 pandas 的 melt 方法结合布尔筛选来实现这个转换,步骤如下:

方法实现

假设你的原 DataFrame 名为 df,执行以下代码:

import pandas as pd

# 构造示例数据(替换成你的实际数据)
df = pd.DataFrame({
    500: ['Tr', 'Tr'],
    600: ['Fls', 'Tr'],
    700: ['Fls', 'Tr'],
    800: ['Fls', 'Fls']
})

# 1. 将宽表转为长格式,把原列名映射为Value列
melted_df = df.melt(var_name='Value', value_name='Status', ignore_index=False)
# 2. 筛选出Status为'Tr'的行,仅保留Value列
result_df = melted_df[melted_df['Status'] == 'Tr'][['Value']].reset_index(drop=True)

print(result_df)

输出结果

运行后会得到符合需求的结构:

Value
0    500
1    500
2    600
3    700

原理说明

  • melt 函数将原 DataFrame 的列名(500、600 等)转换为 Value 列的内容,原单元格的 Tr/Fls 存入 Status 列。
  • 通过布尔索引筛选出 Status 为 Tr 的行,只保留 Value 列,最后重置索引得到目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:55:18