Pandas利用循环和索引定位计算新列数据出错

数据源文件
链接: 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/1dc1YZbBxJjnw6MaVOKYNQQ
提取码:eaqt
img https://img-mid.csdnimg.cn/release/static/image/mid/ask/325982421926137.png

问题1:以上图片为df1h的Dataframe,最后一列是计算结果。目前输出结果全部是重复的数据,用非遍历的方法单独检验倒数第二行代码没有问题,但是使用遍历就变成重复值,请问是什么原因?

问题2:对应通过pd.pivot_table() 做出来的双列索引有什么方法可以将索引列转变成columns,或者能直接用于数据筛选?

目的:计算每个买家号采购金额最高的品类,并输出到 '主采品类' 这个列中,最终通过买家号去重得到所有客户的主要采购品类


#通过数据透视将买家账号和分类作为索引,透出单买家各类产品支  付金额总计
df1h =pd.pivot_table(df1,index=['买家账号','产品分类'],values='实收款',aggfunc='sum')  
acount_1=[]
type_1=[]
acount=[]
purchase_top=[]

#从索引列提取买家账号和产品分类作为columns (同时求问是否有其他更好的方式实现将索引列提取出来做为columns)
for i in range(0,df1h.shape[0]):
    acount_1.append(df1h.index[i][0])

for r in range(0,df1h.shape[0]):
    type_1.append(df1h.index[r][1])


df1h['买家号'] = acount_1   
df1h['品类'] = type_1   
#通过遍历所有买家号计算每个买家号采购金额最高的品类,输出到‘’主采品类‘’这个字段中
for p in range(0,df1h.shape[0]):
    df1h['主采品类'] = df1h[df1h['买家号'] == df1h['买家号'].iloc[p]].sort_values(by='实收款',ascending = False)['品类'][0]
dfh1h = df1h.drop_duplicates(subset=['买家号'],keep='first',inplace=False)['主采品类']


无df1文件无法操作, 从代码来看, 第21行位置中的 iloc[i], i 是从哪儿来?