python pandas稀疏数据帧会丢失多索引列名还是我做错了?

2024-09-30 12:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想看看有没有人能在我打开一个问题之前看到我正在做的事情中的错误。。。在

最小示例-首先创建多索引数据帧:

miindex = pd.MultiIndex.from_product([["x","y"], ["10","20"]],names=['row-foo', 'row-bar'])    
micol = pd.MultiIndex.from_product([['a','b','c'], ["1","2"]],names=['col-foo', 'col-bar'])
df = pd.DataFrame(index=miindex, columns=micol).sortlevel().sortlevel(axis=1)
df = df.fillna(value=3.14) 
df

这为我们提供了一个很好的测试多索引,包括列和行级别的名称:

Python multi-index with valid column level names

现在,如果我用它做一个稀疏矩阵并显示它,列级别的名称就消失了:

^{pr2}$

Python sparse multi-index with missing column level names

如果我将稀疏版本转换回稠密级别名称,这些级别名称仍将消失:

tf = ds.to_dense()
tf

Python dense multi-index with missing column level names

现在我知道显示sparse版本调用了_dense(),但丢失似乎发生在转换为sparse时。我正在探索迁移到sparse以减少代码库的内存使用量,并且我尝试访问稀疏数据帧中的级别生成“KeyError:'levelnotfound'”

有人知道如何在pandas稀疏数据帧中保存列级名称吗?在

(对熊猫0.17.0的测试,也在0.16.2中观察到)


Tags: 数据from名称dffoonamesbarproduct

热门问题