我试图在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?在
我无法访问您的数据,但看起来您的“空”值是
NaN
,因此当基于0值使其稀疏时(即s2
),稀疏数据帧根本就不是稀疏的。在这将返回您期望的结果:
现在您的“空”值是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。在
相关问题 更多 >
编程相关推荐