向数据框添加零列

SBa*_*Bad 1 dataframe python-3.x pandas

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

在此处输入图片说明

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

subset['IRNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
subset['IPNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
Run Code Online (Sandbox Code Playgroud)

我得到类似的结果

在此处输入图片说明

现在,当我执行与另一个数据框相似的操作时,我得到的零列包含NaN和零行,如下所示。这真是奇怪。

subset['IRNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
    subset['IPNotional]=pd.DataFrame(numpy.zeros(shape=(len(subset),1)))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

谢谢

jez*_*ael 6

我相信您需要assign使用字典来设置新的列名称:

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

或更简单:

subset['IRNotional'] = 0
subset['IPNotional'] = 0
Run Code Online (Sandbox Code Playgroud)

现在,当我执行与另一个数据框相似的操作时,我得到的零列包含NaN和零行,如下所示。这真是奇怪。

我认为问题是不同的索引值,因此有必要创建相同的索引,否则对于不匹配的索引获取NaNs:

subset['IPNotional']=pd.DataFrame(numpy.zeros(shape=(len(subset),1)), index=subset.index)
Run Code Online (Sandbox Code Playgroud)