python - Pandas 是否有一种 Pythonic 方式将新的分层列添加到平面列 Dataframe

标签 python pandas multi-index

在 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/

相关文章:

Python Pandas 多索引 : keeping same length of level=1 with all level=0 indexes

python - 根据两列中的文本拆分行(Python、Pandas)

Python:导入子包或子模块

python - 将列添加到python中的数据集

Python:填充每组缺失的日期

python - 如何在 pandas 数据框中获取等效的 numpy 数组索引?

python-2.7 - 计算 Pandas 行中真/假值的数量

python - 从 WSGI 访问 POST 数据

python - 如何配置python环境

python - 优化代码以找到可被 1-20 之间的所有整数整除的最小数字