在 Pandas 中,操作分层列索引感觉比实际需要的更困难,所以我想我一定错过了一些东西。
例如。
pd.DataFrame(dict(A=1, B=2, C=3), index=pd.Index(['key1', 'key2'], name='pk'))
A B C
pk
key1 1 2 3
key2 1 2 3
我想在新的层次结构下添加一个新列。
df['levelone', 'levelone - d'] = 4
将元组键('levelone'、'levelone-d)添加到平面列索引,但不附加新的分级层次结构。我无法使用 df['levelone']
访问此列。
有没有比使用像这样的黑客更好的方法来做到这一点
multiindex = pd.MultiIndex.from_tuples(
[(col_name, '') if isinstance(col_name, str) else col_name for col_name in df.columns]
)
df.columns = multiindex
这会产生我想要的输出
A B C levelone
levelone - d
pk
key1 1 2 3 4
key2 1 2 3 4
但是感觉不太好。为什么提升和降低层级如此痛苦?我错过了什么?
最佳答案
让我们试试
df.columns=pd.MultiIndex.from_product([df.columns,['']])
df.loc[:,('levelone', 'levelone - d')]=4
df
A B C levelone
levelone - d
pk
key1 1 2 3 4
key2 1 2 3 4
关于python - Pandas 是否有一种 Pythonic 方式将新的分层列添加到平面列 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61561800/