在 dask 中遍历 GroupBy 对象
iterate over GroupBy object in dask
是否可以迭代 dask GroupBy 对象以访问底层数据帧?我试过了:
import dask.dataframe as dd
import pandas as pd
pdf = pd.DataFrame({'A':[1,2,3,4,5], 'B':['1','1','a','a','a']})
ddf = dd.from_pandas(pdf, npartitions = 3)
groups = ddf.groupby('B')
for name, df in groups:
print(name)
但是,这会导致错误:KeyError: 'Column not found: 0'
更一般地说,除了 apply 方法之外,dask GroupBy 对象允许什么样的交互?
您可以使用 dask 遍历组执行此操作,也许有更好的方法,但这对我有用。
import dask.dataframe as dd
import pandas as pd
pdf = pd.DataFrame({'A':[1, 2, 3, 4, 5], 'B':['1','1','a','a','a']})
ddf = dd.from_pandas(pdf, npartitions = 3)
groups = ddf.groupby('B')
for group in pdf['B'].unique():
print groups.get_group(group)
这会 return
dd.DataFrame<dataframe-groupby-get_group-e3ebb5d5a6a8001da9bb7653fface4c1, divisions=(0, 2, 4, 4)>
dd.DataFrame<dataframe-groupby-get_group-022502413b236592cf7d54b2dccf10a9, divisions=(0, 2, 4, 4)>
通常不建议迭代 Dask.dataframe 个对象。这是低效的。相反,您可能想尝试构建一个函数并使用 groupby.apply
将该函数映射到结果组
是否可以迭代 dask GroupBy 对象以访问底层数据帧?我试过了:
import dask.dataframe as dd
import pandas as pd
pdf = pd.DataFrame({'A':[1,2,3,4,5], 'B':['1','1','a','a','a']})
ddf = dd.from_pandas(pdf, npartitions = 3)
groups = ddf.groupby('B')
for name, df in groups:
print(name)
但是,这会导致错误:KeyError: 'Column not found: 0'
更一般地说,除了 apply 方法之外,dask GroupBy 对象允许什么样的交互?
您可以使用 dask 遍历组执行此操作,也许有更好的方法,但这对我有用。
import dask.dataframe as dd
import pandas as pd
pdf = pd.DataFrame({'A':[1, 2, 3, 4, 5], 'B':['1','1','a','a','a']})
ddf = dd.from_pandas(pdf, npartitions = 3)
groups = ddf.groupby('B')
for group in pdf['B'].unique():
print groups.get_group(group)
这会 return
dd.DataFrame<dataframe-groupby-get_group-e3ebb5d5a6a8001da9bb7653fface4c1, divisions=(0, 2, 4, 4)>
dd.DataFrame<dataframe-groupby-get_group-022502413b236592cf7d54b2dccf10a9, divisions=(0, 2, 4, 4)>
通常不建议迭代 Dask.dataframe 个对象。这是低效的。相反,您可能想尝试构建一个函数并使用 groupby.apply