我有一个列表
like_zips = [0, 1001, 1002, 1005, 1007, 1010, 1013, 1020, 1027, 1028, 1030,...]
和两列的数据框:
zip AGI
0 11004990.0
1 0 17658446.0
2 0 15963943.0
3 0 14294375.0
4 0 27387096.0
5 0 22652783.0
我正在尝试将列表中的元素与其在DF中的出现进行匹配,因此在zips(列表元素和列元素)匹配的地方,我希望对所有与列表元素匹配的AGI值求平均值,然后附加特定列表元素作为关键字,其现在的平均值作为字典中的值
所以理想情况是这样的:
matched_zip_means = {}
for i in like_zips:
if IRS_AGI_only['zipcode'].isin(like_zips) == True:
a = IRS_AGI_only.loc[IRS_AGI_only['zip'] == i, 'AGI'].mean()
matched_zip_means[i] = a
print(matched_zip_means)
我知道我可以使用groupby,但是列表和数据帧非常大,我想知道是否存在计算上的“非自杀性”替代方案?
编辑:
根据要求,理想的输出应如下所示:
zip_dict = [0 : "mean AGI value of 0", 1001 : "mean AGI of 1001" ... etc]
编辑2:
matched_zip_means = {}
for i in like_zips:
if i in IRS_AGI_only['zipcode']:
a = round(IRS_AGI_only.loc[IRS_AGI_only['zipcode'] == i, 'A00100'].mean(), 2)
matched_zip_means[i] = a
这可行,但是我想知道是否有任何更快的方法?这花了大约30秒