我正在尝试在一个pandas DataFrame中生成一个新列,该列与另一个pandas DataFrame中的值相等。当我尝试创建新列时,我只得到新列值的NaNs。
首先,我使用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’具有月初日期。
发布于 2014-10-07 01:52:56
因为索引并不完全相等,所以会产生NaNs。必须更改其中一个或两个索引才能匹配。示例:
mydata = mydata.set_index(DWDATA.index)以上代码将更改'mydata‘DataFrame的索引,使其与'DWDATA’DataFrame的索引相匹配。
由于两个DataFrames的行数完全相等,因此也可以将'mydata‘的值传递给新的'DWDATA’列:
DWDATA['MXX'] = mydata.iloc[:,0].valueshttps://stackoverflow.com/questions/26221300
复制相似问题