pandas稀疏数据框填充项密度问题

2024-03-28 10:32:10 发布

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

我试图在pandas中创建一个稀疏的数据帧。我通过

df =  pd.read_sql(sql=sql, con=db_eng, index_col=index)
idx = pd.MultiIndex.from_product([df.index.levels[0], df.index.levels[1]], names=df.index.names)
my_df = df.reindex(idx)

然后用以下方法使其稀疏

^{pr2}$

当我检查s1, s2, s3的密度时,我得到了不同的值:

>>> s1.density
0.054158277796754875
>>> s2.density
1.0
>>> s3.density
0.054158277796754875

为什么第二种方法的密度是1?在


Tags: 数据方法pandasdfsqlindexs3names
1条回答
网友
1楼 · 发布于 2024-03-28 10:32:10

我无法访问您的数据,但看起来您的“空”值是NaN,因此当基于0值使其稀疏时(即s2),稀疏数据帧根本就不是稀疏的。在

这将返回您期望的结果:

s2 = my_df.fillna(0).to_sparse(fill_value=0)

现在您的“空”值是0,因此用fill_value=0调用to_sparse实际上会使数据帧稀疏。在


编辑:换句话说,to_sparse将根据fill_value使数据帧稀疏,默认情况下是NaN。在

如果在填充了NaN值的数据帧上使用fill_value=0调用to_sparse,那么得到的数据帧根本不是稀疏的(密度=1.0),而是充满了NaN值。在

你应该读一下简介:http://pandas.pydata.org/pandas-docs/stable/sparse.html。在

相关问题 更多 >