将列分配给SparseDataFrame

时间:2018-01-10 04:14:09

标签: python pandas sparse-matrix sparse-dataframe

考虑 -

df = pd.DataFrame({"a":[1,2,3]})
df

   a
0  1
1  2
2  3

我想做两件事:

  1. 使用默认填充值False
  2. 将数据帧转换为稀疏
  3. 将所有False值的列分配给此稀疏数据框

  4. 这是我提出的两种看似相似的方法。

    第一种方法;分配列并将结果转换为稀疏。

    df.assign(newcol=False).to_sparse(fill_value=False)
    
       a  newcol
    0  1   False
    1  2   False
    2  3   False
    

    第二种方法; 首先转换为稀疏,然后分配列。

    df.to_sparse(fill_value=False).assign(newcol=False)
    
       a  newcol
    0  1     0.0
    1  2     0.0
    2  3     0.0
    

    这些0.0让我失望了。

    FWIW,这种类似于第二种的方法似乎也能正常运行,而False代替0.0 -

    df = df.to_sparse(fill_value=False)
    df['newcol'] = pd.SparseSeries([False] * len(df), dtype='bool_', fill_value=False)
    df
    
       a  newcol
    0  1   False
    1  2   False
    2  3   False
    

    我很困惑为什么两个看似相似的方法会产生截然不同的输出。这样做的正确方法是什么,为什么这些输出之间存在差异?

0 个答案:

没有答案