Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用某些字段查找重复记录,并使用Pandas库更改字段值_Python_Excel_Pandas_Pycharm_Data Science - Fatal编程技术网

Python 使用某些字段查找重复记录,并使用Pandas库更改字段值

Python 使用某些字段查找重复记录,并使用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

我想找到同一周的编号和描述的副本。如果我们以上述第38周和描述A为例,则有2条记录。然后我想得到这两个数量的总和,所以是11。 最后合并这两条记录,并将数量和假日之和显示为1

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