Как объединить Python Dask Dataframes в один столбец? - PullRequest
0 голосов
/ 12 апреля 2019

есть небольшая проблема. У меня есть две таблицы данных dask со следующим форматом:


#DF1.csv
DATE|EVENTNAME|VALUE

#DF2.csv
DATE|EVENTNAME0|EVENTNAME1|...|EVENTNAMEX

Я хочу объединить значение из DF1.csv в DF2.csv, в момент времени t (Дата) и столбца (EventName). Сейчас я использую Dask, потому что я работаю с огромными наборами дат ~ 50 ГБ. Я заметил, что вы не можете использовать прямое присвоение значений в Dask. Итак, я попробовал, dd.Series.where:

df[nodeid].where(time,value) => Result in an error (for row in df.iterrows():
#df2.loc[row[0],row[1][0]] =row[1][1])

Я также попытался выполнить слияние, но в результирующем фрейме данных Dask не было разделов, что приводит к MemoryError, потому что все наборы данных будут загружены в память, если я использую метод .to_csv ('data - *. Csv'). Должно быть легко объединить кадры данных, но я понятия не имею на данный момент. Есть ли профессионал Dask, который может мне помочь?

Edit: // Это хорошо работает в пандах, но не с dask:

for row in df.iterrows():
    df2.loc[row[0],row[1][0]] =row[1][1]

Попробовал что-то подобное:

for row in df.iterrows():
    df2[row[1][0]] = df2[row[1][0]].where(row[0], row[1][1]) 
#Result in Error => raise ValueError('Array conditional must be same shape as '

Есть идеи?

1 Ответ

0 голосов
/ 17 апреля 2019

Для всех, кто интересуется, вы можете использовать:

#DF1
df.pivot(index='date', columns='event', values='value') #to create DF2 Memory efficient

см. Также: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html

раньше, это занимало огромное время, было ужасно голодно и воспитывалось нерезультаты, которые я искал.Просто используйте Pandas pivot, если вы пытаетесь изменить свою схему данных.

Edit: // И больше нет причин использовать Dask, ускорить весь процесс еще дальше;)

...