我在Pandas 身上遇到了一个与时间消耗有关的问题:
代码如下所示:
df = pd.DataFrame({"IDs": [1, 1, 1, 2, 2, 2, 3, 3, 3],
"Month": ["01", "02", "01", "01", "02", "01", "01", "02", "01"],
"column1": [0.9, 0.5, 0.3, 0.8, 0.5, 0.1, 0.6, 0.2, 0.8]})
df_list = []
for id in df.IDs.unique():
temp = df[df.IDs == id]
temp = temp.groupby("Month").mean()
temp2 = temp['column1'].ewm(span=3, adjust=True).sum()
df_list.append(temp2)
注意,unique IDs
包含约500k个元素,原始数据帧df包含约6mil个记录.
现在我用tqdm判断估计的时间,需要14-15个小时才能完成.如果我只有temp = df[df.IDs == id]
行的偶数循环,并且估计的时间是相同的(基本上这些都是pandas函数,所以应该不会产生任何性能问题).所以问题就在这条线上.
有没有其他方法可以做到这一点?谢谢你的建议.