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

如何用Python将宽格式Dataframe转换为含方向权限的长格式?

解决方案

直接用pandas的melt()函数就能快速完成宽表转长表的需求,搭配字符串处理提取方向信息即可。以下是完整实现代码:

import pandas as pd

# 构造示例宽格式DataFrame(模拟你的数据)
df_wide = pd.DataFrame({
    'salesman': ['张三', '李四', '王五'],
    'north_access': [True, False, True],
    'south_access': [False, True, False],
    'east_access': [True, True, False],
    'west_access': [False, False, True]
})

# 转换为长格式
df_long = pd.melt(
    df_wide,
    id_vars=['salesman'],  # 保留的标识符列
    var_name='direction',  # 原列名转换后的新列名
    value_name='access'    # 原列值对应的新列名
)

# 从direction列中提取方向(去掉末尾的_access)
df_long['direction'] = df_long['direction'].str.replace('_access', '', regex=False)

print(df_long)

代码说明

  • melt()是pandas专门用于宽表转长表的函数,id_vars指定不需要转换的列(这里是salesman),剩下的列会被统一转换为direction和access两列。
  • 最后用str.replace()去掉direction列里的_access后缀,得到干净的方向名称(north、south等)。

运行后你会得到如下格式的结果:

salesman direction  access
0       张三     north    True
1       李四     north   False
2       王五     north    True
3       张三     south   False
4       李四     south    True
5       王五     south   False
6       张三      east    True
7       李四      east    True
8       王五      east   False
9       张三      west   False
10      李四      west   False
11      王五      west    True

内容的提问来源于stack exchange,提问作者Bruce Wayne 0005

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:34