Dask - объединить несколько столбцов в один столбец - PullRequest
Купить гитару в Москве
0 голосов
/ 23 декабря

У меня есть dask dataframe, как показано ниже:

   Column1  Column2  Column3  Column4  Column5
 0    a        1        2        3        4
 1    a        3        4        5
 2    b        6        7        8
 3    c        7        7        

Я хочу эффективно объединить все столбцы в один. И я хочу, чтобы каждая строка была одной строкой . Как показано ниже:

   Merged_Column
 0    a,1,2,3,4   
 1    a,3,4,5  
 2    b,6,7,8  
 3    c,7,7,7        

Я видел этот вопрос , но он не кажется эффективным, так как использует функцию apply. Как я могу добиться этого максимально эффективно? (Скорость + использование памяти). Или применить не так проблематично, как я полагаю, так как это dask, а не pandas.

Это то, что я пытался. Кажется, он работает, но меня беспокоит скорость его работы с большим фреймом данных.

cols= df.columns
df['combined'] = df[cols].apply(func=(lambda row: ' '.join(row.values.astype(str))), axis=1, meta=('str'))
df = df.drop(cols, axis=1)

Мне также нужно избавиться от заголовка столбца.

1 Ответ

2 голосов
/ 23 декабря

Лямбда-функция будет принимать каждую строку, поэтому она может влиять на скорость процесса.

. Поэтому, если применить операцию по столбцам, она будет быстрой

df = df.astype(str)
df["Column1"]+","+df["Column2"]+","+df["Column3"]+","+df["Column4"]+","+df["Column5"]
...