数据框上的 Dask 方法到 return 应用方法结果的字典
Dask method on dataframe to return a dictionary of applied method results
我有一个创建值列表的函数。当从数据框中给定一行时,这是此类函数可能执行的操作的简化版本。
def generate_key_list_pair(row):
some_list = do_something_to_make_a_list(row)
return some_list
然后我想将该方法应用于 Dask 数据帧和 return 字典中的所有行,这样:
ddf.apply(generate_key_list_pair)
...会 return 一个字典,其键是行 ID,其值是每个行应用函数的结果,例如:
{
1: [3.0, 4.12, 5.2, 23.1, 4.9],
...
n: [9.34, 8.12, 3.42, 12.1, 34.2]
}
其中 1
到 n
将是传递给每个 generate_key_list_pair
函数调用的行 Series 对象的 id
列值。
编辑:1...n 可能是存在于原始数据框中的列中的唯一标识符。
像 apply
这样的 Dask-Dataframe 方法通常会给你更多的数据帧,这不是你在这种情况下所追求的。但是,您可以访问组成 pandas 数据帧并仍然保持 scheduler/parallel 操作:
def dict_from_part(df):
d2 = df.set_index('id_column').apply(do_something_to_make_a_list, axis=1)
# d2 is a series, so long as the number of elements of the lists
# isn't accidentally the same as the number of columns
return d2.to_dict()
parts = [delayed(dict_from_part)(df) for df in ddf.to_delayed()]
现在 parts
是一个 delayed
对象的列表,每个对象都可以 compute
-d 到你想要的字典。如果你想组合这些字典,你需要创建元组(例如,items())并对它们求和。
我有一个创建值列表的函数。当从数据框中给定一行时,这是此类函数可能执行的操作的简化版本。
def generate_key_list_pair(row):
some_list = do_something_to_make_a_list(row)
return some_list
然后我想将该方法应用于 Dask 数据帧和 return 字典中的所有行,这样:
ddf.apply(generate_key_list_pair)
...会 return 一个字典,其键是行 ID,其值是每个行应用函数的结果,例如:
{
1: [3.0, 4.12, 5.2, 23.1, 4.9],
...
n: [9.34, 8.12, 3.42, 12.1, 34.2]
}
其中 1
到 n
将是传递给每个 generate_key_list_pair
函数调用的行 Series 对象的 id
列值。
编辑:1...n 可能是存在于原始数据框中的列中的唯一标识符。
像 apply
这样的 Dask-Dataframe 方法通常会给你更多的数据帧,这不是你在这种情况下所追求的。但是,您可以访问组成 pandas 数据帧并仍然保持 scheduler/parallel 操作:
def dict_from_part(df):
d2 = df.set_index('id_column').apply(do_something_to_make_a_list, axis=1)
# d2 is a series, so long as the number of elements of the lists
# isn't accidentally the same as the number of columns
return d2.to_dict()
parts = [delayed(dict_from_part)(df) for df in ddf.to_delayed()]
现在 parts
是一个 delayed
对象的列表,每个对象都可以 compute
-d 到你想要的字典。如果你想组合这些字典,你需要创建元组(例如,items())并对它们求和。