naj*_*eem 11 python dataframe pandas dask
我有一个dask数据帧(df),大约有2.5亿行(来自一个10Gb的CSV文件).我有另外ndf25,000行的pandas dataframe().我想通过重复每个项目10,000次,将第一列pandas数据帧添加到dask数据帧.
这是我试过的代码.我已将问题缩小到更小的尺寸.
import dask.dataframe as dd
import pandas as pd
import numpy as np
pd.DataFrame(np.random.rand(25000, 2)).to_csv("tempfile.csv")
df = dd.read_csv("tempfile.csv")
ndf = pd.DataFrame(np.random.randint(1000, 3500, size=2500))
df['Node'] = np.repeat(ndf[0], 10)
Run Code Online (Sandbox Code Playgroud)
使用此代码,我最终得到一个错误.
ValueError:并非所有分区都已知,无法对齐分区.请用于
set_index设置索引.
我可以执行a reset_index()后跟a set_index()来df.known_divisions True生成dask数据帧.但这是一项耗时的操作.有没有更好的方法来做我想做的事情?我可以用熊猫本身做到这一点吗?
最终目标是从ndf任何相应行的位置查找df与某些条件匹配的行.
使用相同的工作流程,您可以按照此处的divisions建议手动设置
import dask.dataframe as dd
import pandas as pd
import numpy as np
pd.DataFrame(np.random.rand(25000, 2)).to_csv("tempfile.csv", index=False)
df = dd.read_csv("tempfile.csv")
ndf = pd.DataFrame(np.random.randint(1000, 3500, size=2500))
df.divisions = (0, len(df)-1)
df["Note"] = dd.from_array(np.repeat(ndf.values, 10))
Run Code Online (Sandbox Code Playgroud)
我认为使用np.repeat效率不是很高,特别是对于大 df 而言。