[英]Fill values in a column of a particular row with the value of same column from another row based on a condition on second column in Pandas
我有一個Dataframe代表零售鏈數據集。 它具有列Item_Identifier,Item_Weight,Item_MRP,Outlet_Identifier。 Item_Weight列代表特定項目的重量(以gms為單位),為數字,具有某些缺失值。 列Outlet_Identifier = OUT019或OUT027的Item列的Item_Weight缺少值。 但是,在不同行中具有另一個Outlet_Identifier(OUT019或OUT027除外)的同一行中的同一Item(由Item_Identifier標識)具有Item_Weight,可用於將缺少的Item_Weight替換為Outlet_Identifier(OUT019或OUT027)。
我已經編寫了以下代碼,但似乎有問題。 而且,這不是最干凈的方法:
items = df_train[df_train.Outlet_Identifier == "OUT019"]['Item_Identifier']
listItems = []
for i in items:
u = df_train.query('(Item_Identifier == @i) & (Outlet_Identifier !=
"OUT019") & (Outlet_Identifier != "OUT027")').head(1)
if not u.empty:
listItems.append(u.at[u.index[0],'Item_Weight'])
df_rep = pd.concat([items.reset_index(),pd.DataFrame(listItems)],axis=1)
df_rep.columns = ['row', 'Item_Identifier', 'Item_Weight']
for index, row in df_rep.iterrows():
df_train.loc[df_train.Item_Identifier == row.Item_Identifier ]
['Item_Weight']= row['Item_Weight']
需要一些幫助。
df['Item_Weight'] = df.groupby(['Item_Identifier','Outlet_Identifier'])['Item_Weight'].ffill()
df['Item_Weight'] = df.groupby(['Item_Identifier','Outlet_Identifier'])['Item_Weight'].bfill()
這應該可以解決您的問題。 ffill()
將查看所有下一行,以查看是否有可用的內容並將其填充,而bfill()
將查看前幾行以填充空值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.