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

如何将Pandas中包含多条信息的单列拆分为多个独立列?

解决方案

你当前遇到的单列问题是因为groupby()搭配value_counts()返回的是带MultiIndex的Series,索引层级默认不会转为普通列,只需要用reset_index()即可完成拆分,之后用布尔索引过滤即可。

完整可运行代码

import pandas as pd

members = pd.read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/members.csv")
expeditions = pd.read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/expeditions.csv")

success_members_exp = pd.merge(members, 
expeditions[['expedition_id','termination_reason']], on='expedition_id', how='inner')

# 1. 计算百分比同时把MultiIndex转为普通列
success_members_exp_pourcent = success_members_exp.groupby('expedition_id')['success'].value_counts(normalize=True).reset_index(name='pourcent')
success_members_exp_pourcent['pourcent'] = success_members_exp_pourcent['pourcent'] * 100

# 2. 过滤掉success为False的记录,只保留成功相关的占比数据
filtered_df = success_members_exp_pourcent[success_members_exp_pourcent['success'] == True]

代码说明

  • reset_index(name='pourcent'):把原来的两层索引expedition_id、success全部转为普通列,同时把统计的占比值命名为pourcent,执行后你会得到3个独立列:expedition_id、success、pourcent
  • 布尔索引success_members_exp_pourcent['success'] == True:直接筛选出所有成功相关的行,自动剔除success为False的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:02