我只想从Dask数据帧中提取50行,但我做不到。 最后,我想制作一个新的dataframe,每个类有50行。你知道吗
当我运行这个代码时
import dask.dataframe as dd
ddf = dd.from_pandas(train_csv, npartitions=30)
classes = train_csv.landmark_id.unique()
for cl in tqdm(classes):
tmpdf = ddf.loc[ddf["landmark_id"] == cl]
print(len(tmpdf))
结果是
1048
359
182
149
94
57
78
157
.
.
.
因此,每个tmpdf必须有50多行。 但是当我运行这个代码时
import dask.dataframe as dd
ddf = dd.from_pandas(train_csv, npartitions=30)
classes = train_csv.landmark_id.unique()
for cl in tqdm(classes):
tmpdf = ddf.loc[ddf["landmark_id"] == cl]
tmpdf = tmpdf[:50]
print(len(tmpdf))
结果是
1
1
1
1
1
.
.
.
我想索引可能是错了。所以呢运行了这个代码
import dask.dataframe as dd
ddf = dd.from_pandas(train_csv, npartitions=30)
classes = train_csv.landmark_id.unique()
for cl in tqdm(classes):
tmpdf = ddf.loc[ddf["landmark_id"] == cl]
tmpdf = tmpdf.reset_index()
tmpdf = tmpdf[:50]
print(len(tmpdf))
但结果是
1048
359
182
149
94
57
78
.
.
.
怎么回事?你知道吗
我也试过.compute()
我运行了这个代码
import dask.dataframe as dd
ddf = dd.from_pandas(train_csv, npartitions=30)
classes = train_csv.landmark_id.unique()
for cl in tqdm(classes):
tmpdf = ddf.loc[ddf["landmark_id"] == cl]
tmpdf = tmpdf.compute()
tmpdf = tmpdf[:50]
print(len(tmpdf))
现在我可以纠正结果了
50
50
50
50
50
.
.
.
但是执行的时间太长了。 我使用dask的最初原因是速度。。。你知道吗
这行
for cl in tqdm(classes):
给出了错误所以我不确定你的代码是如何在循环中打印整数的。你知道吗
无论如何,如果您打印出
classes
,您将看到它是一个延迟对象(dask
Series
)所以,IIUC,在循环之前需要计算
classes
。使用其中一个或者
相关问题 更多 >
编程相关推荐