gpt4 book ai didi

python - pandas:在 MultiIndex DataFrame 上复制/广播单索引 DataFrame:HowTo 和内存效率

转载 作者:太空狗 更新时间:2023-10-30 00:58:46 24 4
gpt4 key购买 nike

问题

为股票交易准备机器学习数据。我在大型 DataFrame 上有 3-dim MultiIndex(可能是 n=800000 x f=20 )。一个索引维度是 date关于 dt=1000水平,其他人识别m=800不同的股票(每只股票有 20 个特征,每只股票都有)。因此对于每个日期,有 800 x 20 个不同的值。

现在我有 dt=1000 x g=30 全局时间序列(如 DJIA、货币汇率等),因此每个日期的 30 个值对于每只股票都相同。这是一个单一的索引 DataFrame,只有日期作为索引。

问题一

我如何合并这两个数据集,以便将 30 个系列广播到每只股票上,最终形状为 (800000 x 50)

问题二

有没有办法不通过复制后30列的数据,而是查看原始数据来节省内存?根据我提到的数字,对于 float64 精度,我仍然会在 ~ 300 MB 左右,这仍然可以。但我很好奇。

示例

这是 f=2 的一个最小示例, g=1 , m=4dt=3我所拥有的:

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

我喜欢拥有的东西:

                        x   y     z
level name date
alpha A 2018-01-01 5 4 123
2018-01-02 6 6 124
2018-01-03 7 5 125
B 2018-01-01 3 5 123
2018-01-02 4 4 124
2018-01-03 5 3 125
beta C 2018-01-01 1 2 123
2018-01-02 1 0 124
2018-01-03 0 1 125
D 2018-01-01 12 13 123
2018-01-02 15 14 124
2018-01-03 14 13 125

最佳答案

我认为需要join两个 DataFrame 中相同索引名称 date 的对齐方式:

df = df1.join(df2)
print (df)
x y z
level name date
alpha A 2018-01-01 5 4 123
2018-01-02 6 6 124
2018-01-03 7 5 125
B 2018-01-01 3 5 123
2018-01-02 4 4 124
2018-01-03 5 3 125
beta C 2018-01-01 1 2 123
2018-01-02 1 0 124
2018-01-03 0 1 125
D 2018-01-01 12 13 123
2018-01-02 15 14 124
2018-01-03 14 13 125

关于python - pandas:在 MultiIndex DataFrame 上复制/广播单索引 DataFrame:HowTo 和内存效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48807723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com