如何对布尔形式的表格执行逆透视(Unpivot)操作
转换布尔类型表格为ID-类型映射表的方法
这里有几种实用的方法帮你完成表格转换,根据你常用的工具选就行:
Excel/Google Sheets 解法
如果你用电子表格工具处理数据,一行公式就能搞定:
- 在新的
Type列第一个单元格(比如D2)输入公式:
=INDEX({"A","B","C"},MATCH(1,A2:C2,0))
- 把公式下拉填充到所有行,就能自动匹配每行对应的类型。
转换后的最终表格:
| ID | Type |
|---|---|
| One | A |
| Two | C |
| Three | B |
公式逻辑很直观:
MATCH(1,A2:C2,0):在当前行的A-C列里找到值为1的单元格位置INDEX({"A","B","C"}, ...):根据找到的位置,从预设的类型列表里取出对应的名称
Python Pandas 解法
如果需要用代码批量处理这类表格,Pandas是高效的选择:
import pandas as pd # 构造原始数据 raw_data = { 'ID': ['One', 'Two', 'Three'], 'A': [1, 0, 0], 'B': [0, 0, 1], 'C': [0, 1, 0] } df = pd.DataFrame(raw_data) # 提取每行值为1的列名作为Type df['Type'] = df[['A', 'B', 'C']].idxmax(axis=1) # 筛选出需要的ID和Type列 final_df = df[['ID', 'Type']] # 输出结果 print(final_df)
运行代码后会得到:
ID Type 0 One A 1 Two C 2 Three B
核心逻辑是idxmax(axis=1)——它会返回每行中数值最大的列名,刚好对应你数据里唯一的1所在的类型列。
内容的提问来源于stack exchange,提问作者Leonid Datta
相关产品推荐
相关产品推荐

