我正在使用多索引数据框。这是我第一次处理这种事情。这有点不合常规,但是我知道在这种情况下我确实需要两个标头。因此,这是DF的前几列。
df_append.columns.values
结果:
array([('IDRSSD', 'Unnamed: 0_level_1'),
('RCFD3531', 'TRDG ASSETS-US TREAS SECS IN DOM OFF'),
('RCFD3532', 'TRDG ASSETS-US GOV AGC CORP OBLGS'),
('RCFD3533', 'TRDG ASSETS-SECS ISSD BY ST POL SUB'),
('RCFD3534', 'TRDG ASSETS-MBS-PASS-THRU-FNMA,FHLMC'),
('RCFD3535', 'TRDG ASSETS-MBS-CMOS&REMICS-FNMA,ETC'),
('RCFD3536', 'TRDG ASSETS-MBS-ALL OTHER'),
我想给这个东西命名:
'Unnamed: 0_level_1'
现在是空白,这给我带来了一些问题。所以,我尝试了这个:
df_append.columns.values[:1] = ['IDRSSD','IDRSSD_ID']
那似乎在数组内部创建了一个列表。我认为那不会起作用。我认为我需要做的就是命名这个东西:'Unnamed: 0_level_1'
成为这个东西:'IDRSSD_ID'
或者,如果我错了,并且需要以不同的方式处理,请告诉我。谢谢。
获取级别,对其进行修改,在DataFrame上设置索引
df = pd.DataFrame([[1,2,3], [10,20,30], [100,200,300]])
df.columns = pd.MultiIndex.from_tuples((("a", "b"), ("a", "c"), ("d", "f")))
这将更改最后一列的级别1的名称。
>>> df
a d
b c f
0 1 2 3
1 10 20 30
2 100 200 300
>>> df.columns.values
array([('a', 'b'), ('a', 'c'), ('d', 'f')], dtype=object)
>>> level1 = df.columns.get_level_values(1)
>>> level1.values[-1] = '999'
>>> level1
Index(['b', 'c', '999'], dtype='object')
>>> df.columns.set_levels(level1.values,level=1,inplace=True)
>>> df
a d
b c 999
0 1 2 3
1 10 20 30
2 100 200 300
>>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句