首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向pandas DataFrame添加新列时的NaN值

向pandas DataFrame添加新列时的NaN值
EN

Stack Overflow用户
提问于 2014-10-07 01:13:39
回答 1查看 26.9K关注 0票数 26

我正在尝试在一个pandas DataFrame中生成一个新列,该列与另一个pandas DataFrame中的值相等。当我尝试创建新列时,我只得到新列值的NaNs。

首先,我使用API调用来获取一些数据,'mydata‘DataFrame是按日期索引的一列数据。

代码语言:javascript
复制
mydata = Quandl.get(["YAHOO/INDEX_MXX.4"],
                    trim_start="2001-04-01", trim_end="2014-03-31",
                    collapse="monthly")

我用下面的代码从CSV获得的下一个DataFrame,它包含许多数据列,其行数与'mydata‘相同。

代码语言:javascript
复制
DWDATA = pandas.DataFrame.from_csv("filename",
                                   header=0,
                                   sep=',',
                                   index_col=0,
                                   parse_dates=True,
                                   infer_datetime_format=True)

然后,我尝试生成新列,如下所示:

代码语言:javascript
复制
DWDATA['MXX'] = mydata.iloc[:,0]

同样,我只得到NaN的值。有没有人能帮我理解为什么要这样做,以及如何解决?从我所读到的信息来看,我的索引可能有问题。索引是每个DataFrame中的日期,但是'mydata‘具有月末日期,而'DWDATA’具有月初日期。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 01:52:56

因为索引并不完全相等,所以会产生NaNs。必须更改其中一个或两个索引才能匹配。示例:

代码语言:javascript
复制
mydata = mydata.set_index(DWDATA.index)

以上代码将更改'mydata‘DataFrame的索引,使其与'DWDATA’DataFrame的索引相匹配。

由于两个DataFrames的行数完全相等,因此也可以将'mydata‘的值传递给新的'DWDATA’列:

代码语言:javascript
复制
DWDATA['MXX'] = mydata.iloc[:,0].values
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26221300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档