【发布时间】:2012-07-27 17:22:05
【问题描述】:
我有两个较大的(提供 sn-ps)pandas DateFrames,它们的日期不相等,我希望将它们合并为一个索引:
NAB.AX CBA.AX
Close Volume Close Volume
Date Date
2009-06-05 36.51 4962900 2009-06-08 21.95 0
2009-06-04 36.79 5528800 2009-06-05 21.95 8917000
2009-06-03 36.80 5116500 2009-06-04 22.21 18723600
2009-06-02 36.33 5303700 2009-06-03 23.11 11643800
2009-06-01 36.16 5625500 2009-06-02 22.80 14249900
2009-05-29 35.14 13038600 --AND-- 2009-06-01 22.52 11687200
2009-05-28 33.95 7917600 2009-05-29 22.02 22350700
2009-05-27 35.13 4701100 2009-05-28 21.63 9679800
2009-05-26 35.45 4572700 2009-05-27 21.74 9338200
2009-05-25 34.80 3652500 2009-05-26 21.64 8502900
问题是,如果我运行这个:
keys = ['CBA.AX','NAB.AX']
mv = pandas.concat([data['CBA.AX'][650:660],data['NAB.AX'][650:660]], axis=1, keys=stocks,)
生成以下 DateFrame:
CBA.AX NAB.AX
Close Volume Close Volume
Date
2200-08-16 04:24:21.460041 NaN NaN NaN NaN
2203-05-13 04:24:21.460041 NaN NaN NaN NaN
2206-02-06 04:24:21.460041 NaN NaN NaN NaN
2208-11-02 04:24:21.460041 NaN NaN NaN NaN
2211-07-30 04:24:21.460041 NaN NaN NaN NaN
2219-10-16 04:24:21.460041 NaN NaN NaN NaN
2222-07-12 04:24:21.460041 NaN NaN NaN NaN
2225-04-07 04:24:21.460041 NaN NaN NaN NaN
2228-01-02 04:24:21.460041 NaN NaN NaN NaN
2230-09-28 04:24:21.460041 NaN NaN NaN NaN
2238-12-15 04:24:21.460041 NaN NaN NaN NaN
有人知道为什么会这样吗?
另一方面:是否有任何 python 库可以从雅虎中提取数据并对其进行规范化?
干杯。
编辑:供参考:
data = {
'CBA.AX': <class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2313 entries, 2011-12-29 00:00:00 to 2003-01-01 00:00:00
Data columns:
Close 2313 non-null values
Volume 2313 non-null values
dtypes: float64(1), int64(1),
'NAB.AX': <class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2329 entries, 2011-12-29 00:00:00 to 2003-01-01 00:00:00
Data columns:
Close 2329 non-null values
Volume 2329 non-null values
dtypes: float64(1), int64(1)
}
【问题讨论】:
-
你的熊猫版本是什么?这看起来像是 0.8.1 中修复的错误
-
是的,我也有这个想法。当我第一次遇到这个问题时,我运行的是 0.8.0,但现在运行的是 0.8.1,并且出现了相同的结果......
-
你能给我发电子邮件给我那些数据帧的腌制版本吗(wesmckinn AT gmail)?我无法在这里重现该问题。还要检查您使用的是 NumPy 1.6.1 还是 2012 年 6 月 5 日之后的开发版本。也许最好将此讨论移至 GitHub
-
不确定你的
concat行会做什么 mv = pandas.concat([data['CBA.AX'][650:660],data['NAB.AX'][650: 660]], axis=1, keys=stocks,) 1. 您似乎有一个数据框data存储您的数据,但您提到您有两个数据框。 2.stocks没有定义,而且你添加了一个逗号,所以key将是一个tuple
标签: python numpy scipy pandas yahoo-finance