我有一个代表零售链数据集的数据框。它有Item\u Identifier、Item\u Weight、Item\u MRP、Outlet\u Identifier列。列Item_Weight表示gms中特定项的权重,是数字,但缺少某些值。列项目\u权重缺少列出口\u标识符=OUT019或OUT027的项目的值。但是,与另一个出口标识(OUT019或OUT027除外)在不同行中的同一项目(由项目标识标识标识标识标识)具有项目权重,并且可以用于将缺少的项目权重替换为出口标识(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']
需要帮助。你知道吗
这应该能解决你的问题。
ffill()
将查看接下来的所有行以查看是否有可用的内容,并将填充它,bfill()
将查看前面的行以填充空值。你知道吗相关问题 更多 >
编程相关推荐