如何将Python Dask Dataframes合并到列中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Python Dask Dataframes合并到列中?相关的知识,希望对你有一定的参考价值。

有点问题。我有两个dask数据帧,格式如下:


#DF1.csv
DATE|EVENTNAME|VALUE

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

我想在时间t(日期)和列(EventName)将DF1.csv中的值合并到DF2.csv中。我现在使用Dask,因为我正在使用大量的日期集~50gb。我注意到你不能在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专业版,可以帮助我?

编辑://这适用于熊猫但不适用于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 '

有任何想法吗?

答案

对于所有感兴趣的人,您可以使用:

#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。

编辑://并且没有理由再使用Dask,进一步加快整个过程;)

以上是关于如何将Python Dask Dataframes合并到列中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache Spark Dataframes (Python) 执行 Switch 语句

如何在Python Pandas中将MultiIndex Dataframes与权重合并?

使用 Python 将 Dask 数据帧转换为 Spark 数据帧

如何在 dask 分布式工作人员上设置日志记录?

Dask:我如何将我的代码与 dask 延迟并行化?

如何将数据读取到 dask 数据帧并删除坏行