Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 索引到Dask序列将返回Dask序列_Python_Pandas_Dask - Fatal编程技术网

Python 索引到Dask序列将返回Dask序列

Python 索引到Dask序列将返回Dask序列,python,pandas,dask,Python,Pandas,Dask,我有一个Dask系列的Dask数据帧 我想索引到本系列中,以获取dask数据帧,用于后续工作 但是,使用loc[0]会导致另一个dask系列。使用到_frame也不起作用,因为结果是“一系列Dask数据帧的Dask数据帧” 下面是一个使用Dask系列熊猫数据帧的最小示例(不完全相同,但说明了问题): 看起来,一旦对象成为dask序列,所有后续的组合器都会将其作为dask序列保留,直到compute,这将返回一个“singleton”序列 是否有必要告诉dask将索引对象视为我所期望的类型?您可能

我有一个Dask系列的Dask数据帧

我想索引到本系列中,以获取dask数据帧,用于后续工作

但是,使用
loc[0]
会导致另一个dask系列。使用
到_frame
也不起作用,因为结果是“一系列Dask数据帧的Dask数据帧”

下面是一个使用Dask系列熊猫数据帧的最小示例(不完全相同,但说明了问题):

看起来,一旦对象成为dask序列,所有后续的组合器都会将其作为dask序列保留,直到
compute
,这将返回一个“singleton”序列


是否有必要告诉dask将索引对象视为我所期望的类型?

您可能有理由将数据帧保留在一个系列中,但我从示例中不理解,但我猜测,将原始数据帧保留为dask中的分区会更好。然后,您可以使用
concat
将它们连接起来,如下例所示:

import pandas as pd
import dask.dataframe as dd

pdf1 = pd.DataFrame({'a': [1,2,3,4], 'b': [4,3,2,1]})
pdf2 = pd.DataFrame({'a': [4,3,2,1], 'b': [1,2,3,4]})

ddf1 = dd.from_pandas(pdf1, npartitions=1)
ddf2 = dd.from_pandas(pdf2, npartitions=1)

ddf = dd.concat([ddf1, ddf2], axis=0)
ddf.compute()
您可以使用
ddf.partitions[0].compute()访问第一个分区


更重要的是,如果对原始数据帧进行了索引,并且索引已排序且索引不重叠,则
concat
将正确设置连接数据帧的分段,而无需重新索引。您可以使用
ddf.divisions
检查分割,在本例中显示
(None,None,None)
,但是如果您从正确的索引开始,请更正分割。

您可能有理由将数据帧保留在一个系列中,但我从本例中不理解,但我的猜测是,将原始数据帧作为分区保存在dask中会更好。然后,您可以使用
concat
将它们连接起来,如下例所示:

import pandas as pd
import dask.dataframe as dd

pdf1 = pd.DataFrame({'a': [1,2,3,4], 'b': [4,3,2,1]})
pdf2 = pd.DataFrame({'a': [4,3,2,1], 'b': [1,2,3,4]})

ddf1 = dd.from_pandas(pdf1, npartitions=1)
ddf2 = dd.from_pandas(pdf2, npartitions=1)

ddf = dd.concat([ddf1, ddf2], axis=0)
ddf.compute()
您可以使用
ddf.partitions[0].compute()访问第一个分区


更重要的是,如果对原始数据帧进行了索引,并且索引已排序且索引不重叠,则
concat
将正确设置连接数据帧的分段,而无需重新索引。您可以使用
ddf检查分割。分割
,在本例中显示
(None,None,None)
,但如果您从正确的索引开始,则可以更正分割。

我怀疑这是因为Dask不知道只有一个值为0的索引值。原则上,索引值为0的行可能很多,因此
.loc
的一般输出类型是一个系列


当我们有唯一值的索引时,这与我们的直觉背道而驰,这可能会导致您似乎遇到的挫折感。

我怀疑这是因为Dask不知道只有一个值为0的索引值。原则上,索引值为0的行可能很多,因此
.loc
的一般输出类型是一个系列


当我们有唯一值的指数时,这与我们的直觉背道而驰,这可能会导致您遇到的挫折感。

所以没有解决这个atm的方法?我发现处理这些情况的唯一方法是转换为delayed并直接处理它,然后转换回需要的任何东西。解决方法是我们总是返回一个序列。从Dask的角度来看,这不是一个bug,而是熊猫端的一个奇怪的类型不一致性。所以这个atm没有解决方案?我发现处理这些情况的唯一方法是转换为delayed并直接处理它,然后转换回需要的任何东西。解决方法是我们总是返回一个序列。从Dask的角度来看,这不是一个bug,而是一个奇怪的类型不一致性。