如何为带有多级列的Pandas DataFrame赋值?(v1.1.5版本)
解决Pandas 1.1.5中多级列DataFrame的赋值问题
你这段代码用了链式索引(df['a'][['age', 'job']].loc[...]),在Pandas 1.1.5里,这种链式操作返回的是原DataFrame的副本而非视图,所以你给副本赋值的操作根本不会影响原数据,这就是为什么原df里还是零值。
给多级列DataFrame赋值时,要避免链式索引,改用以下几种方式:
- 用
.loc一次性定位目标行和多级列:
df.loc['male', ('a', ['age', 'job'])] = ['30', 'teacher']
- 直接用元组指定完整的多级列标签:
df.loc['male', [('a', 'age'), ('a', 'job')]] = ['30', 'teacher']
- 如果要给某一级列下的所有子列赋值,还可以简化写法:
df.loc['male', 'a'] = ['30', 'teacher']
运行以上任意一种代码后,原DataFrame的对应位置都会被正确赋值。
内容的提问来源于stack exchange,提问作者xinxin
相关产品推荐
相关产品推荐

