【问题标题】:How to merge Python Dask Dataframes into one on columns?如何在列上将 Python Dask Dataframes 合并为一个?
【发布时间】:2019-09-03 05:35:24
【问题描述】:

有点问题。我有两个具有以下格式的 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 专业人士可以帮助我吗?

编辑:// 这在 pandas 中效果很好,但在 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 '

有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe merge dask


    【解决方案1】:

    有兴趣的可以使用:

    #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,进一步加快整个过程;)

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 1970-01-01
      • 2017-10-05
      • 2020-09-04
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多