Dask применять групповые мета изменения индекса столбца dtype - PullRequest
0 голосов
/ 03 июля 2019

У меня есть следующий незначительный пример:

df = pd.DataFrame({'col1': ['a', 'a', 'a', 'b', 'b'], 'col2': [80, 80, 443, 80,80], 'col3':['yes', 'no', 'yes', 'yes', 'no']})

dtypes:

df.dtypes

col1    object
col2     int64
col3    object
dtype: object

и группировка по:

df.groupby(['col1', 'col2']).col3.apply(lambda series: 'yes' in series.values).reset_index().dtypes

col1    object
col2     int64
col3    object
dtype: object

Но если я используюdask dataframe:

ddf = dd.from_pandas(df, npartitions=2)
ddf.dtypes

col1    object
col2     int64
col3    object
dtype: object

и группировка с использованием мета:

meta = make_meta({'col3': '?'})

meta.index = pd.MultiIndex(levels=[[], []], codes=[[],[]], names=['col1', 'col2'])

ddf.groupby(['col1', 'col2']).col3.apply(lambda series: 'yes' in series.values, meta=meta).reset_index().dtypes

col1    object
col2    object
col3      bool
dtype: object

col2 изменена на объект.Должен ли я по-другому использовать мета-кьюорд?

1 Ответ

0 голосов
/ 03 июля 2019

Я нашел решение, передав фиктивные значения для уровня, чтобы dask мог извлечь необходимую информацию:

meta.index = pd.MultiIndex(levels=[['a'], [1]], codes=[[],[]], names=['col1', 'col2'])
...