循环遍历 Pandas 数据框以根据两个不同列表中的行值进行计算

时间:2021-03-22 17:32:24

标签: python pandas loops

我已经能够进行计算,但现在我无法将结果附加回数据框 e3。从图中可以看到数值正在打印出来。


brand_list = list(e3["Brand Name"])
product_segment_list = list(e3['Product Segment'])

# Create a list of tuples: data
data = list(zip(brand_list, product_segment_list))

for i in data:
    step1 = e3.loc[(e3['Brand Name']==i[0]) & (e3['Product Segment']==i[1])]
    Delta_Price = (step1['Price'].diff(1).div(step1['Price'].shift(1),axis=0).mul(100.0))
    print(Delta_Price)

1 个答案:

答案 0 :(得分:0)

使用 groupby 更容易。在每个循环中,'r' 将只是来自每个类别的 e3 数据帧的分组行和索引。

new_df = []
for i,r in e3.groupby(['Brand Name','Product Segment']):
    price_num = r["Price"].diff(1).values
    price_den = r["Price"].shift(1).values
    r['Price Delta'] = price_num/price_den
    new_df.append(r)
e3_ = pd.concat(new_df, axis = 1)