Какой самый быстрый и эффективный способ объединить столбец dataFrame в N col на 1 строку и затем в строку? - PullRequest
0 голосов
/ 14 сентября 2018

Это, по сути, то, что у меня происходит в моем коде, оно работает, но медленно:

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

Я пытаюсь взять список из N столбцов по 1 строке данных, конкатих на оси 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...