我正在尝试并行化DataFrameGroupBy的应用程序操作,因此我编写了如下代码
keys, grps = [], []
for k, g in tqdm(df.groupby(['col1', 'col2'])):
keys.append(k)
grps.append(g)
,然后将grps发送到multiprocessing.Pool
。我观察到的是,循环停止了大约71%的行程和中断。
71%|███████▏ | 185000/260000 [00:25<00:10, 7353.74it/s]
col1
是一列字符串,而col2
是float64。我想是由col2引起的问题,因为df.groupby(['col1']
会遍历所有260k组,但我不知道为什么以及如何。
使用的熊猫版本:0.23.3
答案 0 :(得分:1)
我认为数据框列包含NaN(缺失)值。利用 fillna()函数用一些默认数据填充缺失值。
for column in df:
df[column]=df[column].fillna(0)
在groupby语句之前使用上面的代码。