【问题标题】:Adding a zero columns to a dataframe向数据框添加零列
【发布时间】:2018-11-14 15:30:30
【问题描述】:

我有一个奇怪的问题,我无法弄清楚。我有一个看起来像这样的数据框子集

在数据框中,我使用以下代码添加“零”列:

subset['IRNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
subset['IPNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))

我得到了类似的结果

现在,当我对另一个数据框做类似的事情时,我得到了带有混合 NaN 和零行的零列,如下所示。这真的很奇怪。

subset['IRNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
    subset['IPNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))

我不明白为什么有时我得到零,而另一个我得到 NaN 或 NaN 和零的混合。可以的话请帮忙

谢谢

【问题讨论】:

  • 执行subset['IRNotional'] = 0 分配0s 列。

标签: python-3.x pandas dataframe


【解决方案1】:

我相信你需要assign 和字典来设置新的列名:

subset = subset.assign(**dict.fromkeys(['IRNotional','IPNotional'], 0))
#you can define each column separately
#subset = subset.assign(**{'IRNotional': 0, 'IPNotional': 1})

或者更简单:

subset['IRNotional'] = 0
subset['IPNotional'] = 0

现在,当我对另一个数据框做类似的事情时,我得到了带有混合 NaN 和零行的零列,如下所示。这真的很奇怪。

我认为问题是不同的索引值,所以有必要创建相同的索引,否则不匹配的索引得到NaNs:

subset['IPNotional']=pd.DataFrame(numpy.zeros(shape=(len(subset),1)), index=subset.index)

【讨论】:

  • 非常感谢 Jezrael。这让我很困惑。就像你说的我会保持简单并坚持你建议的更简单的版本
  • @SBad - 是的,我想我找到了问题,添加到答案中。您可以使用您的数据进行测试
猜你喜欢
  • 2017-11-16
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 2016-12-19
  • 2021-06-11
相关资源
最近更新 更多