itertools和pandas的内存错误?

时间:2016-01-20 20:52:22

标签: python pandas memory-management itertools

我正在尝试生成以下步进序列模式但python抛出 MemoryError

import numpy as np
import pandas as pd
import itertools

Temp = np.linspace(-5,5,pow(2,16))

df = pd.DataFrame([Temp*2] , index=['ColA','ColB']).T

print df

df2 = pd.DataFrame([e for e in itertools.product(df.ColA,df.ColB)],columns=df.columns)

print df2

错误

df2 = pd.DataFrame([e for e in itertools.product(df.ColA,df.ColB)],columns=df.columns)
MemoryError

请告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用power=16itertools.product(产生cartesian product),您正在创建一个(2*2)^16=4,294,967,296 tuplesrows的列表。 DataFrame。你想要那么长的序列吗?

power = 16
for i in range(power):
    Temp = np.linspace(-5, 5, pow(2, i))
    df = pd.DataFrame([Temp] * 2, index=['ColA','ColB']).T
    print(i, len(df), len(list(product(df.ColA, df.ColB))))

0 1 1
1 2 4
2 4 16
3 8 64
4 16 256
5 32 1024
6 64 4096
7 128 16384
8 256 65536
9 512 262144
10 1024 1048576
11 2048 4194304
12 4096 16777216
13 8192 67108864
14 16384 268435456
...