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

如何在Pandas中将行值转换为带布尔值的新列?

表格行转列:将年份值转为列并标记匹配状态

现有表格

名称年份
A2016
B2017
C2018
D2019

目标表格

名称2016201720182019
AYESNoNoNo
BNoYESNoNo
CNoNoYESNo
DNoNoNoYES

转换需求

把原表格中「年份」列的每个唯一值作为新列,对应名称与年份匹配的单元格标记YES,不匹配则标记No。


实现方案

方案1:Excel/Google Sheets 操作

  1. 提取唯一年份作为表头
    在空白单元格输入=UNIQUE(B:B)(假设年份在B列),获取所有不重复的年份,将这些值作为新的表头行。
  2. 设置条件标记公式
    以名称A对应的2016列单元格为例,输入公式:=IF($B2=D$1,"YES","No")(D1是2016表头单元格),然后横向、纵向拖动填充所有单元格即可。

方案2:Python Pandas 代码实现

import pandas as pd

# 构造原始数据
raw_data = {
    "名称": ["A", "B", "C", "D"],
    "年份": [2016, 2017, 2018, 2019]
}
df = pd.DataFrame(raw_data)

# 添加标记列并执行行转列,填充非匹配值为No
df["status"] = "YES"
result_df = df.pivot(index="名称", columns="年份", values="status").fillna("No").reset_index()
result_df.columns.name = None

# 输出结果
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:50:29