问题
证券交易数据准备。我有一个大数据帧上的三维多索引(可能是n=800000 x f=20
)。一个索引维度是date
,具有大约dt=1000
水平,其他维度识别{
现在我有了dt=1000 x g=30
全球时间序列(比如道琼斯工业平均指数,货币汇率等),所以每个日期的30个值对每只股票来说都是相同的。这是一个只有日期作为索引的单索引数据帧。在
问题1
我如何合并这两个数据集,以便将30个系列广播到每个股票上,以得到形状(800000 x 50)
?在
问题2
有没有一种方法可以做到这一点,而不是通过复制后30列的数据,而是通过查看原始数据来节省内存?对于我提到的数字,对于float64的精确度,我仍然在~300MB,这还可以。但我很好奇。在
示例
以下是我所得到的f=2
、g=1
、m=4
和{
import pandas as pd
data = {
'x': [5,6,7,3,4,5,1,1,0,12,15,14],
'y': [4,6,5,5,4,3,2,0,1,13,14,13]
}
dates = [pd.to_datetime('2018-01-01'), pd.to_datetime('2018-01-02'), pd.to_datetime('2018-01-03')]
index = pd.MultiIndex.from_arrays([
['alpha'] * 6 + ['beta'] * 6,
['A'] * 3 + ['B'] * 3 + ['C'] * 3 + ['D'] * 3,
dates * 4,
])
df1 = pd.DataFrame(data, index=index)
df1.index.names = ['level', 'name', 'date']
df2 = pd.DataFrame([123,124,125], index=dates, columns=['z'])
df2.index.name = "date"
print (df1)
print (df2)
-------------------------------
x y
level name date
alpha A 2018-01-01 5 4
2018-01-02 6 6
2018-01-03 7 5
B 2018-01-01 3 5
2018-01-02 4 4
2018-01-03 5 3
beta C 2018-01-01 1 2
2018-01-02 1 0
2018-01-03 0 1
D 2018-01-01 12 13
2018-01-02 15 14
2018-01-03 14 13
z
date
2018-01-01 123
2018-01-02 124
2018-01-03 125
我喜欢的是:
^{pr2}$
我认为需要^{} 在这两个
DataFrame
中为相同的索引名date
对齐:相关问题 更多 >
编程相关推荐