如何将Python Dask数据框合并为一列?

时间:2019-04-12 12:41:47

标签: python pandas dataframe merge dask

有一个小问题。我有两个具有以下格式的dask数据帧:


#DF1.csv
DATE|EVENTNAME|VALUE

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

我想在时间t(日期)和列(事件名称)将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 '

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于每个感兴趣的人,您都可以使用:

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

Edit://而且没有理由再使用Dask了,甚至可以进一步加快整个过程;)