#python #pandas #github #repository #dask
#python #pandas #github #репозиторий #dask
Вопрос:
Я постоянно использую Pandas и Dask. У меня также есть ряд пользовательских классов и функций, которые я часто использую для различных анализов, которые мне всегда приходится редактировать, чтобы учитывать либо Dask, либо Pandas. Я постоянно оказываюсь в ситуации, когда хотел бы назначить атрибуты анализируемому набору данных, минимизируя compute
команду из dask, а также упрощая управление функциями при переключении между типами данных. Что-то эффективно похожее на:
import pandas as pd
import dask.dataframe as dd
from pydataset import data
df = data('titanic')
setattr(df, 'vals12', 1)
test = dd.from_pandas(df, npartitions = 2)
test.vals12 #would still contain the attribute vals12
df = test.compute()
df.vals12 #would still contain the attribute vals12
Однако я не знаю способа добиться этого без редактирования базовых пакетов (Pandas / Dask). В результате мне было интересно, есть ли способ выполнить приведенный выше пример без создания нового класса (или статической версии пакетов) или есть ли способ «разветвлять» репозитории непубличным способом (позволяя добавлять мои изменения, но все же позволяямне легко получить будущие функции без боли)?
Ответ №1:
В предстоящем выпуске Dask вы сможете сделать это, используя недавнюю attrs
функцию в pandas 1.0. На данный момент вы можете установить dask с Github, чтобы использовать эту функциональность.
import pandas as pd
import dask.dataframe as dd
df = pd.DataFrame({
"a":[0,1,2],
"b":[2,3,4]
})
df.attrs["vals12"] = 1
ddf = dd.from_pandas(df, npartitions=2)
ddf.attrs
{'vals12': 1}
Комментарии:
1. Похоже, что это не
attrs
сохраняется после вызова compute для фрейма данных dask, напримерdf2 = ddf.compute()
. То естьdf2.attrs
будет пустым.