Python 使用某些字段查找重复记录,并使用Pandas库更改字段值
我想找到同一周的编号和描述的副本。如果我们以上述第38周和描述A为例,则有2条记录。然后我想得到这两个数量的总和,所以是11。 最后合并这两条记录,并将数量和假日之和显示为1Python 使用某些字段查找重复记录,并使用Pandas库更改字段值,python,excel,pandas,pycharm,data-science,Python,Excel,Pandas,Pycharm,Data Science,我想找到同一周的编号和描述的副本。如果我们以上述第38周和描述A为例,则有2条记录。然后我想得到这两个数量的总和,所以是11。 最后合并这两条记录,并将数量和假日之和显示为1 Week_number Holiday Description Qty 38 1 A 5 38 0 A 6 38 0 B 1 38
Week_number Holiday Description Qty
38 1 A 5
38 0 A 6
38 0 B 1
38 1 C 1
40 0 A 1
再次检查第38周的副本,将有3条记录。并将假日更改为具有相同周号的所有记录中的1个
Week_number Holiday Description Qty
38 1 A 11
38 0 B 1
38 1 C 1
40 0 A 1
对此有何评论?
谢谢查找假日=1的周数。然后将剩余的0转换为1,方法是为该特定周数指定假日1。最后一部分是基于子集=['Week_number','Description']删除重复项
Week_number Holiday Description Qty
38 1 A 11
38 1 B 1
38 1 C 1
40 0 A 1
您希望如何聚合
假日
列?对于周数
等于38
,它可以是1
或0
。在对周数
和说明
进行分组时,您希望如何汇总这些信息?感谢ammywemmy提供您的代码。当我执行它时,所有假日值都变为1,因为您检查了week_number和description的哪些行的大小大于1。但我想要的是检查week_number和description的哪些行的假日值等于1。如果任何一行的值等于1,则根据周数和描述分组将其他假日0零字段也更改为1。可以安全地假设假日列中只有两个值,即0和1吗?是的,感谢更新成功:)。我通过df.drop\u重复项(['Week\u number','Description'],keep=“first”,inplace=True)更改了几个部分。它在您的代码中保留两个重复记录。是的,因为您需要将其分配回df。我不知道上面的代码
df['Qty'] = df.groupby(['Description','Week_number']).Qty.transform('sum')
cond = df.query('Holiday ==1').Week_number.unique()
df['Holiday'] = np.where(df.Week_number.isin(cond),1,df.Holiday)
df = df.drop_duplicates(['Week_number','Description'])
Week_number Holiday Description Qty
0 38 1 A 11
2 38 1 B 1
3 38 1 C 1
4 40 0 A 1