Python 如何使用多索引对象作为方法链的一部分来重命名数据帧的列?
我有一个包含数据的DataFrame和一个包含多级列名的多索引对象。有没有一种方法可以使用多索引对象将列名重命名为链的一部分 我知道我可以使用“pandas.DataFrame.columns”赋值来重命名列,但这需要一个单独的语句,这会破坏链 索引有一种类似的方法:“pandas.DataFrame.set_index”。它完全符合我的要求,但对于索引。对于列,我需要这样的方法 以下是我尝试的一个简短演示:Python 如何使用多索引对象作为方法链的一部分来重命名数据帧的列?,python,pandas,Python,Pandas,我有一个包含数据的DataFrame和一个包含多级列名的多索引对象。有没有一种方法可以使用多索引对象将列名重命名为链的一部分 我知道我可以使用“pandas.DataFrame.columns”赋值来重命名列,但这需要一个单独的语句,这会破坏链 索引有一种类似的方法:“pandas.DataFrame.set_index”。它完全符合我的要求,但对于索引。对于列,我需要这样的方法 以下是我尝试的一个简短演示: import numpy as np import pandas as pd I
import numpy as np
import pandas as pd
In [71]:testdf = pd.DataFrame(np.random.rand(6,4))
In [72]:testdf
Out[72]:
0 1 2 3
0 0.557704 0.827760 0.160876 0.107557
1 0.538251 0.817143 0.444935 0.665006
2 0.235694 0.721285 0.318727 0.220839
3 0.765107 0.776936 0.993133 0.127687
4 0.416877 0.121863 0.059885 0.332443
5 0.181796 0.685475 0.677187 0.399419
In [73]:cols = pd.MultiIndex.from_tuples(
(("A", "1"), ("A", "2"),
("B", "1"), ("B", "1")),
names=("main", "sub"))
In [74]:cols
Out[74]:MultiIndex(levels=[['A', 'B'], ['1', '2']],
codes=[[0, 0, 1, 1], [0, 1, 0, 0]],
names=['main', 'sub'])
In [75]:
(testdf
.divide(6)
.rename(cols, axis='columns'))
Out[75]:
TypeError: 'MultiIndex' object is not callable
我期待着:
In [76]:testdf
Out[76]:
main A B
sub 1 2 1 1
0 0.099468 0.105746 0.115839 0.139009
1 0.107165 0.024658 0.063040 0.165303
2 0.131601 0.111327 0.040034 0.019957
3 0.128644 0.091933 0.060455 0.128705
4 0.092786 0.063429 0.080659 0.084506
5 0.005722 0.120841 0.072167 0.131921
听起来你想要设置索引,但需要转置? 给你:
testdf.divide(6).T.set_index(cols).T
是的,这将产生我想要的。谢谢你的帮助!