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

MultiIndex DataFrame是否有类似pd.DataFrame.at的单元格赋值方法?

针对MultiIndex DataFrame设置单元格值的方法

当然有啦!你完全可以用类似pd.DataFrame.at的方法来操作带MultiIndex的DataFrame,只需要把多层行索引组合成元组传入就行,另外还有loc、iat等方法也能实现目标,下面结合你的示例代码详细说明:

1. 使用at方法(最接近你想要的用法)

at方法针对单个单元格的读写非常高效,对于MultiIndex的行索引,你需要把多层标签打包成元组:

import pandas as pd
arrays = [["a", "b", "c"], ["a", "b", "c"]]
multi_index = pd.MultiIndex.from_product(iterables=arrays, names=["i", "k"])
partial_corr = pd.DataFrame(index=multi_index, columns=arrays[0])

# 设置(i='a', k='b')行、列'a'的单元格值
partial_corr.at[('a', 'b'), 'a'] = 0.5

2. 使用loc方法(更灵活的索引方式)

如果需要同时操作多个单元格,或者想更灵活地选择行/列,loc是很好的选择,单个单元格设置也完全没问题:

# 设置(i='a', k='c')行、列'b'的单元格值
partial_corr.loc[('a', 'c'), 'b'] = 0.8

3. 使用iat方法(按位置索引)

如果你知道目标单元格的整数位置(行和列的下标,从0开始),可以用iat直接定位:

# 设置第2行(对应i='a',k='c')、第1列(对应列'b')的单元格值
partial_corr.iat[2, 1] = 1.2

验证效果

执行完上面的设置后,打印DataFrame就能看到修改后的结果:

print(partial_corr)

输出结果:

a    b    c
i k             
a a  NaN  NaN  NaN
  b  0.5  NaN  NaN
  c  NaN  1.2  NaN
b a  NaN  NaN  NaN
  b  NaN  NaN  NaN
  c  NaN  NaN  NaN

注意:使用at或loc时,行的MultiIndex标签必须以元组形式传入,不能分开写哦!比如不能写成partial_corr.at['a', 'b', 'a'],必须是partial_corr.at[('a', 'b'), 'a']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:01:48