Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Dataframe Dask为什么要填写;"富",;在我的数据框中是1_Dataframe_Dask_Dask Distributed - Fatal编程技术网

Dataframe Dask为什么要填写;"富",;在我的数据框中是1

Dataframe Dask为什么要填写;"富",;在我的数据框中是1,dataframe,dask,dask-distributed,Dataframe,Dask,Dask Distributed,我已经阅读了大约15个csv文件: df = dd.read_csv("gs://project/*.csv", blocksize=25e6, storage_options={'token': fs.session.credentials}) 然后我持久化了数据帧(它使用7.33 GB内存): 我设置了一个新索引,因为我希望该字段上的group by尽可能高效: df = df.set_index('column_a').persist() 现在我有18

我已经阅读了大约15个csv文件:

df = dd.read_csv("gs://project/*.csv", blocksize=25e6,
                 storage_options={'token': fs.session.credentials})
然后我持久化了数据帧(它使用7.33 GB内存):

我设置了一个新索引,因为我希望该字段上的group by尽可能高效:

df = df.set_index('column_a').persist()
现在我有181个分区和180个分区。 为了测试group by的运行速度,我尝试了一个只打印group Dataframe的自定义应用函数:

grouped_by_index = df.groupby('column_a').apply(lambda n: print(n)).compute()
使用正确的列打印数据帧,但值为“1”、“foo”或“True”。例如:

column_b  column_c column_d  column_e  column_f  column_g  \
index                                                                   
a          foo           1      foo        1           1           1
我还得到警告:

/opt/conda/lib/python3.7/site-packages/ipykernel_-launcher.py:1: 用户警告:
meta
未指定,从部分数据推断。 如果结果出乎意料,请提供
meta
。之前: .apply(func)在:.apply(func,meta={'x':'f8','y':'f8'})之后 数据帧结果或:.apply(func,meta=('x','f8'))
对于series result“”,启动IPython内核的入口点


这里发生了什么?

事实上,如果您阅读
apply
的文档,您将看到
meta=
是一个可以传递的参数,它告诉Dask如何期望操作的输出。这是必要的,因为
apply
可以做非常一般的事情

如果您不提供
meta=
,在您的情况下,Dask将尝试使用一个示例迷你数据框为操作设定种子,其中任何数字列包含1,文本列包含“foo”,只是为了查看输出结果。因为在
apply
中打印(实际上不返回任何内容),所以您看到了这个种子


正如文档所建议的,如果可能的话,最好提供
meta=
,这样就可以避免整个过程。

当我提供元数据时,会出现错误:
AttributeError:'DataFrame'对象没有属性“name”
。我这样定义元数据:
meta={'project':'object','net':'int64','no':'object','v':'int64','min':'int64','avg':'int64','associated':'bool'}
。我认为这应该行得通,但最好提供一个零长度的数据帧。我这样定义了meta:
meta=('visions',object)
这就成功了,感谢您的帮助。啊,是的-您定义的是输出,它只是一组
None
值(因为您不从lambda返回任何内容)。
column_b  column_c column_d  column_e  column_f  column_g  \
index                                                                   
a          foo           1      foo        1           1           1