pandas.DataFrame.droplevel
是否有相反的功能,我可以使用级别名称或索引保留多级索引/列的某些级别?
例子:
df = pd.DataFrame([
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
], columns=['a','b','c','d']).set_index(['a','b','c']).T
a 1 5 9 13
b 2 6 10 14
c 3 7 11 15
d 4 8 12 16
以下两个命令都可以返回以下数据帧:
df.droplevel(['a','b'], axis=1)
df.droplevel([0, 1], axis=1)
c 3 7 11 15
d 4 8 12 16
我正在寻找“keeplevel”命令,以便以下两个命令都可以返回以下数据帧:
df.keeplevel(['a','b'], axis=1)
df.keeplevel([0, 1], axis=1)
a 1 5 9 13
b 2 6 10 14
d 4 8 12 16
最佳答案
没有 keeplevel
因为它会是多余的:在一个封闭且定义良好的集合中,当你定义你想要删除的东西时,你会自动定义你想要保留的东西
您可能会从您拥有的内容和 droplevel
返回的内容中获得不同。
def keeplevel(df, levels, axis=1):
return df.droplevel(df.axes[axis].droplevel(levels).names, axis=axis)
>>> keeplevel(df, [0, 1])
a 1 5 9 13
b 2 6 10 14
d 4 8 12 16
关于python - pandas.DataFrame.droplevel 是否有相反的功能(如keeplevel)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58065223/