【发布时间】:2014-12-01 00:17:18
【问题描述】:
我正在尝试在 pandas DataFrame 中生成一个新列,该列等于另一个 pandas DataFrame 中的值。当我尝试创建新列时,我只会得到新列值的 NaN。
首先我使用 API 调用来获取一些数据,“mydata”DataFrame 是按日期索引的一列数据
mydata = Quandl.get(["YAHOO/INDEX_MXX.4"],
trim_start="2001-04-01", trim_end="2014-03-31",
collapse="monthly")
我使用以下代码从 CSV 获得的下一个 DataFrame,它包含许多行数与“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.iloc[:,0].values) -
添加“.values”确实有效!谢谢@joris,我会记住将来索引必须相等的那一点!
标签: python pandas dataframe nan