Я не мог заставить эту строку работать (потому что я передавал dictionary
в качестве основного словаря Python, который не является правильным вводом)
ddf = dd.DataFrame(dictionary, divisions=[2], meta=pd.DataFrame(dictionary,
index=list(range(2))), name='ddf')
print(ddf.compute())
() # this is the output of ddf.compute(); clearly something is not right
Итак, мне пришлось создать несколько фиктивных данныхи использовать это в моем подходе к созданию dask dataframe
.
Генерировать фиктивные данные в словаре
d = {0: [388]*2,
1: [387]*2,
2: [386]*2,
3: [385]*2,
5: [384]*2,
'2012-06-13': [389]*2,
'2012-06-14': [389]*2,}
Создать Dask dataframe
из dictionary сумка для сумок
- это означает, что сначала вы должны использовать панд для преобразования словаря в панды
DataFrame
, а затем использовать .to_dict(..., orient='records')
чтобы получить последовательность (список строковых словарей), вам нужно создать сумку для сумок
Итак, вот как я создал необходимую последовательность
d = pd.DataFrame(d, index=list(range(2))).to_dict('records')
print(d)
[{0: 388,
1: 387,
2: 386,
3: 385,
5: 384,
'2012-06-13': 389,
'2012-06-14': 389},
{0: 388,
1: 387,
2: 386,
3: 385,
5: 384,
'2012-06-13': 389,
'2012-06-14': 389}]
Теперь я используюсписок словарей для создания dask bag
dask_bag = db.from_sequence(d, npartitions=2)
print(dask_bag)
dask.bag<from_se..., npartitions=2>
Конвертировать сумку dask в dask dataframe
df = dask_bag.to_dataframe()
Переименовать столбцы в dask dataframe
cols = {0:'Datetime',1:'col1',2:'col2',3:'col3',5:'col5'}
df = df.rename(columns=cols)
print(df)
Dask DataFrame Structure:
Datetime col1 col2 col3 col5 2012-06-13 2012-06-14
npartitions=2
int64 int64 int64 int64 int64 int64 int64
... ... ... ... ... ... ...
... ... ... ... ... ... ...
Dask Name: rename, 6 tasks
Вычислить dask dataframe
(на этот раз не получится ()
! )
print(ddf.compute())
Datetime col1 col2 col3 col5 2012-06-13 2012-06-14
0 388 387 386 385 384 389 389
0 388 387 386 385 384 389 389
Примечания:
- Также отдокументация
.rename
: inplace
не поддерживается. - Я думаю, ваш словарь переименования содержал строки
'0'
, '1'
и т. д. для имен столбцов, которые были целыми числами.Для ваших данных может иметь место (как в случае с фиктивными данными здесь), что словарь должен был быть просто целыми числами 0
, 1
и т. Д. - Согласно
dask
docs , я использовал этот подход на основе словаря переименования 1-1 и имен столбцов , не включенных в диктовку переименования останется без изменений - это означает, что вам не нужнопередать имена столбцов, которые вам не нужно переименовывать