Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 2.7 将Python Dask系列转换为循环内部的列表或Dask数据帧_Python 2.7_List_Pandas_Dask - Fatal编程技术网

Python 2.7 将Python Dask系列转换为循环内部的列表或Dask数据帧

Python 2.7 将Python Dask系列转换为循环内部的列表或Dask数据帧,python-2.7,list,pandas,dask,Python 2.7,List,Pandas,Dask,我正在使用Pandas中的一个代码,该代码涉及读取大量文件,然后对循环中的每个文件执行各种操作(循环遍历文件列表) 我正在尝试将其转换为基于Dask的方法,而不是基于熊猫的方法,到目前为止,我有以下尝试-我是Dask新手,需要询问这是否是一种合理的方法 以下是输入数据的外观: A X1 X2 X3 A_d S_d 0 1.0 0.475220 0.839753 0.872468 1 1 1 2.0 0.318410

我正在使用Pandas中的一个代码,该代码涉及读取大量文件,然后对循环中的每个文件执行各种操作(循环遍历文件列表)

我正在尝试将其转换为基于Dask的方法,而不是基于熊猫的方法,到目前为止,我有以下尝试-我是Dask新手,需要询问这是否是一种合理的方法

以下是输入数据的外观:

     A        X1        X2        X3  A_d  S_d
0  1.0  0.475220  0.839753  0.872468    1    1
1  2.0  0.318410  0.940817  0.526758    2    2
2  3.0  0.053959  0.056407  0.169253    3    3
3  4.0  0.900777  0.307995  0.689259    4    4
4  5.0  0.670465  0.939116  0.037865    5    5
代码如下:

import dask.dataframe as dd
import numpy as np; import pandas as pd

def my_func(df,r): # perform representative calculations
    q = df.columns.tolist()

    df2 = df.loc[:,q[1:]] / df.loc[:,q()[1:]].sum()
    df2['A'] = df['A']

    df2 = df2[ ( df2['A'] >= r[0] ) & ( df2['A'] <= r[1] ) ]

    c = q[1:-2]
    A = df2.loc[:,c].sum()

    tx = df2.loc[:,c].min() * df2.loc[:,c].max()

    return A - tx

list_1 = []
for j in range(1,13):
    df = dd.read_csv('Test_file.csv')
    N = my_func(df,[751.7,790.4]) # perform calculations
    out = ['X'+str(j)+'_2', df['A'].min()] + N.compute().tolist()
    list_1.append(out)
df_f = pd.DataFrame(list_1)
导入dask.dataframe作为dd
输入numpy作为np;作为pd进口熊猫
定义我的功能(df,r):#执行代表性计算
q=df.columns.tolist()
df2=df.loc[:,q[1:]/df.loc[:,q()[1:].sum()
df2['A']=df['A']
df2=df2[(df2['A']>=r[0])和(df2['A']
是否可以将N(这是一个Dask系列)作为一行垂直附加到一个空白的Dask DF上?例如,在Pandas中,我倾向于这样做:DF_N=pd.DataFrame()将跳出for循环,然后类似于DF_N=pd.concat([DF_N,N],axis=0)。这将允许在for循环中建立一个Dask DF。之后(跳出循环),我可以轻松地将构建的Dask DF水平连接到pd.DataFrame(列表1)

永远不要将行附加到Pandas数据帧或Dask数据帧。这非常低效。相反,最好将多个Pandas/Dask数据帧收集在一起,然后调用
pd.concat
dd.concat
函数

我还注意到,您正在for循环中调用compute。如果可能的话,建议仅在设置完整个计算之后调用compute。否则您可能无法获得太多并行性


注意:我实际上没有遇到理解代码的麻烦。我只是在最后回答问题。希望其他人能给出更全面的答案。

如果你能将问题简化为更小的示例,我怀疑你会更快地得到更好的答案。你可能想阅读好的,这是怎么回事?我已经删除了与熊猫相关的材料,并截断了剩余的基于Dask的代码,以将其保持在最低限度。关于如何处理该系列
N
?这里是一个很好的例子,说明了一个最低限度的问题:。stackoverflow用户可以在大约20秒内理解该代码。这是一个很好的数字。是吗一种将Dask系列数据帧放入
dd.concat
的方法?它一直要求dfs必须是一个列表,但系列不合适?