根据列表值更新Pandas Dataframe中的行

问题描述

我有一个看起来像这样的DataFrame:

product units_sold  week
 sku        5        W01
 sku        3        W02
 sku        2        W03
 sku        4        W04
 sku        6        W05
 sku        5        W36
 sku        3        W38
 sku        2        W39
 sku        4        W40

在“星期”中,缺少w37,并且列的排列顺序错误:

我有一个包含所有需要的行和正确顺序的列表:

week_list = ['W36','W37','W38','W39','W40','W01','W02','W03','W04','W05']

所需的输出是:

   product units_sold  week
     sku        5        W36
     sku        0        W37
     sku        5        W38
     sku        2        W39
     sku        4        W40
     sku        6        W01
     sku        3        W02
     sku        2        W03
     sku        4        W04
     sku        6        W05

W37在位且'unit_sold'为0的地方

仅添加一列解决方案是不合适的,因为我有一个很大的DataFrame,并且可能还有其他丢失的行。

我尝试使用pd.sort_values和pd.categorical:

def sorter(column):
    reorder = week_list
    cat = pd.Categorical(column,categories=reorder,ordered=True)
    return pd.Series(cat)

df.sort_values(by="week",key=sorter)

这帮助我设置了正确的顺序,但是仍然缺少'w37',因此问题没有得到解决。

有什么方法可以基于此列表更新DataFrame行值吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)