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

如何将DataFrame索引拆分为两列?已掌握rsplit但不知如何应用

拆分DataFrame索引列的实用方法

嘿,我来帮你搞定这个DataFrame索引拆分的问题!你提到熟悉rsplit但不知道怎么应用到索引场景,其实操作逻辑和列拆分大同小异,只是需要针对性地处理索引对象就行,下面给你几个具体的实现方案:

方案一:先把索引转为普通列再拆分

这是最直观的方式,先把索引转换成常规列,再用你熟悉的拆分方法处理:

import pandas as pd

# 假设你的df是这样的(示例)
data = {'value': [10, 20, 30]}
df = pd.DataFrame(data, index=["Alice_25_NewYork", "Bob_30_London", "Charlie_35_Paris"])

# 第一步:将索引重置为普通列,命名为'index_col'
df = df.reset_index(names='index_col')

# 第二步:拆分列,用split或rsplit都可以,expand=True会把拆分结果转为多列
# 比如用split按下划线拆分所有部分
df[['姓名', '年龄', '城市']] = df['index_col'].str.split('_', expand=True)

# 如果是用rsplit从右侧拆分(比如只拆最后一个分隔符)
# df[['姓名_年龄', '城市']] = df['index_col'].str.rsplit('_', n=1, expand=True)

# 第三步:如果不需要原索引列,可以删除它
df = df.drop('index_col', axis=1)

方案二:直接操作索引进行拆分

不需要把索引转成列,直接对索引对象执行拆分,再把拆分结果合并回原DataFrame:

# 还是用上面的示例df
split_result = df.index.str.split('_', expand=True)
# 给拆分后的列命名
split_result.columns = ['姓名', '年龄', '城市']
# 把拆分结果和原df合并
df = df.join(split_result)

注意事项

  • 如果你的索引不是字符串类型,需要先转成字符串再拆分:df.index = df.index.astype(str)
  • rsplit的n参数可以控制拆分次数,比如n=1就只会从右侧拆分一次,适合只拆分最后一部分的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:03:35