将列指定给sparafram

2024-04-26 17:34:06 发布

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

考虑-

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

   a
0  1
1  2
2  3

我想做两件事:

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


这里有两个看起来很相似的方法。你知道吗

第一个方法;指定列并将结果转换为稀疏。你知道吗

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

这些{}把我甩了。你知道吗

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

为什么两个看似相似的方法会产生完全不同的输出,我感到困惑。正确的方法是什么?为什么这些输出之间存在差异?你知道吗


Tags: to数据方法falsedataframedfvaluefill