通过列数据然后行明智地将N col依次连接为N col的最快,内存效率最高的方法是什么?

时间:2018-09-13 22:59:31

标签: python pandas numpy dataframe optimization

从本质上讲,这是我在代码中所做的事情,它可以工作,但是很慢:

results = []
for x1 in range(0, 10):
    toConcat = []
    for x2 in range(0, 10):
        df = pd.DataFrame(np.array([[x2+x1+1, x2+x1+2, x2+x1+3, x2+x1+4, x2+x1+5]]), columns=["a", "b", "c", "d", "e"])
        toConcat.append(df)
    df = pd.concat(toConcat, axis=1)
    results.append(df)
df = pd.concat(results, axis=0)
df

我正在尝试通过1行数据帧获取N列的列表,将它们合并在轴1上(列方式),然后将它们的列表并合并在轴0上(行方式)。我想我需要删除行:

df = pd.concat(toConcat, axis=1) 

从循环内部开始,因为我知道在循环内部调用pd.concat会使速度大大降低。我希望做这样的事情:

results = []
for x1 in range(0, 10):
    toConcat = []
    for x2 in range(0, 10):
        df = pd.DataFrame(np.array([[x2+x1+1, x2+x1+2, x2+x1+3, x2+x1+4, x2+x1+5]]), columns=["a", "b", "c", "d", "e"])
        toConcat.append(df)
    results.append(toConcat)
*magic concatenation*
df

我想同时沿两个不同的轴连接。这是可能的,还是有人可以想到一种更好的方法来获得我想要的结果?谢谢!

编辑:想通了!尽管我不确定这是否是最有效的。在这里:

results = []
for x1 in range(0, 10):
    toConcat = []
    for x2 in range(0, 10):
        df = pd.DataFrame(np.array([[x2+x1+1, x2+x1+2, x2+x1+3, x2+x1+4, x2+x1+5]]), columns=["a", "b", "c", "d", "e"])
        toConcat.append(df)
    results.append(toConcat)
df = pd.concat([pd.concat(x, axis=1) for x in results], axis=0)
df

0 个答案:

没有答案