我无法让这行代码正常工作(因为我将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的方法中使用这些数据。在
在字典中生成虚拟数据
^{pr2}$
从字典中创建Dask dataframe从这意味着您必须首先使用pandas将字典转换为pandas DataFrame,然后使用^{}获取创建dask包所需的序列(按行排列的字典列表)
下面是我如何创建所需的序列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 bagdask_bag = db.from_sequence(d, npartitions=2)
print(dask_bag)
dask.bag
将dask包转换为dask dataframedf = dask_bag.to_dataframe()
重命名dask中的列dataframecols = {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
计算daskdataframe(这次不会得到()的输出!)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,等等
根据^{} docs,我使用了基于1-1重命名字典的方法,未包含在重命名dict中的列名将保持不变
这意味着您不需要传入不需要重命名的列名