繁体   English   中英

将新列添加到 pandas DataFrame 时的 NaN 值

[英]NaN values when new column added to pandas DataFrame

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

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

mydata = Quandl.get(["YAHOO/INDEX_MXX.4"],
                    trim_start="2001-04-01", trim_end="2014-03-31",
                    collapse="monthly")

下一个 DataFrame 我使用以下代码从 CSV 获得,它包含许多行数与“mydata”相同的数据列

DWDATA = pandas.DataFrame.from_csv("filename",
                                   header=0,
                                   sep=',',
                                   index_col=0,
                                   parse_dates=True,
                                   infer_datetime_format=True)

然后我尝试像这样生成新列:

DWDATA['MXX'] = mydata.iloc[:,0]

同样,我只得到 NaN 值。 有人可以帮我理解为什么会这样以及如何解决吗? 从我读到的内容看来,我的索引可能有问题。 索引是每个 DataFrame 中的日期,但“mydata”有月末日期,而“DWDATA”有月初日期。

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

mydata = mydata.set_index(DWDATA.index)

以上内容将更改'mydata'DataFrame的索引以匹配'DWDATA'DataFrame的索引。

由于两个DataFrame的行数完全相同,您也可以将'mydata'的值传递给新的'DWDATA'列:

DWDATA['MXX'] = mydata.iloc[:,0].values

我喜欢接受的解决方案,只是添加它。 我无法添加评论(没有足够的代表),但我遇到了完全相同的问题。 最终用 tolist() 解决了它。 似乎是最蟒蛇的方式。 从@gtnbz2nyt 回复复制:

DWDATA['MXX'] = mydata.iloc[:,0].tolist()

我希望它涵盖更多的数据类型。 编辑:澄清一下,iloc 正在制作一个系列,然后转移到一个列表中。 你不能列出 df object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM