在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']
访问此列。
[比使用像hacky这样的东西有更好的方法吗?
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