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

如何在Pandas多级索引DataFrame中直接添加新行

给多级索引DataFrame添加新行(不重置索引)

嘿,我来帮你搞定这个问题!要在不破坏原有多级索引结构的前提下添加新行,最稳妥且兼容新版pandas的方式是用pd.concat(),毕竟append()已经被官方标记为弃用啦。下面给你两种可行的实现方法:

方法1:使用pd.concat()(推荐,适配所有新版pandas)

核心思路是先构造一个和原DataFrame结构完全匹配的单行多级索引DataFrame,再将它与原表拼接:

import pandas as pd

# 还原你的原多级索引DataFrame
df = pd.DataFrame({'a':[1,2,3,4,5],'b':[100,200,300,400,500],'c':['a','b','j','e','q']})
df = df.set_index(['a','b'])

# 你的新数据变量
a1 = 7
b1 = 700
c1 = 'z'

# 构造单行的多级索引DataFrame
new_row_df = pd.DataFrame(
    {'c': [c1]},
    index=pd.MultiIndex.from_tuples([(a1, b1)], names=['a', 'b'])
)

# 拼接两个DataFrame,保留多级索引
df = pd.concat([df, new_row_df])

执行后得到的最终结果如下,完美保留了原有的多级索引:

c
a  b
1  100  a
2  200  b
3  300  j
4  400  e
5  500  q
7  700  z

方法2:使用append()(仅适用于pandas 2.0以下版本)

如果你的pandas版本比较旧,也可以用append()快速实现,但官方已弃用该方法,不推荐长期使用:

# 构造带多级索引名称的Series
new_row_series = pd.Series({'c': c1}, name=(a1, b1))
# 添加到原DataFrame
df = df.append(new_row_series)

两种方法都不需要重置索引再重建,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:43