Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 删除重复行的列值为零的重复项_Python_Pandas - Fatal编程技术网

Python 删除重复行的列值为零的重复项

Python 删除重复行的列值为零的重复项,python,pandas,Python,Pandas,我试图删除重复行中特定列的值为零的重复项 Name Division Clients 0 Dave Sales 0 1 Dave Sales 15 2 Karen Sales 10 3 Rachel HR 20 4 Dan HR 45 5 Dan HR 0 我希望实现的产出如下所示 Name Division Clients 1 Dave Sales 15

我试图删除重复行中特定列的值为零的重复项

    Name  Division  Clients
0   Dave    Sales   0
1   Dave    Sales   15
2   Karen   Sales   10
3   Rachel  HR      20
4   Dan     HR      45
5   Dan     HR      0
我希望实现的产出如下所示

    Name  Division  Clients
1   Dave    Sales   15
2   Karen   Sales   10
3   Rachel  HR      20
4   Dan     HR      45

非常感谢任何人提供的任何帮助。

您可以检查Clients==0,并根据名称和除法查找所有重复项,然后执行&和反运算,然后执行布尔掩码:

c = df['Clients'].eq(0)
df[~(df.duplicated(['Name','Division'],keep=False) & c)]

由于海底,考虑下面的DF:

df1 = df.append(pd.DataFrame([['Dave','HR',0]],columns=df.columns),ignore_index=True)

print(df1)
     Name Division  Clients
0    Dave    Sales        0
1    Dave    Sales       15
2   Karen    Sales       10
3  Rachel       HR       20
4     Dan       HR       45
5     Dan       HR        0
6    Dave       HR        0

c = df1['Clients'].eq(0)
print(df1[~(df1.duplicated(['Name','Division'],keep=False) & c)])

     Name Division  Clients
1    Dave    Sales       15
2   Karen    Sales       10
3  Rachel       HR       20
4     Dan       HR       45
6    Dave       HR        0

您可以检查Clients==0,并根据名称和除法查找所有重复项,然后执行&和逆运算,然后执行布尔掩码:

c = df['Clients'].eq(0)
df[~(df.duplicated(['Name','Division'],keep=False) & c)]

由于海底,考虑下面的DF:

df1 = df.append(pd.DataFrame([['Dave','HR',0]],columns=df.columns),ignore_index=True)

print(df1)
     Name Division  Clients
0    Dave    Sales        0
1    Dave    Sales       15
2   Karen    Sales       10
3  Rachel       HR       20
4     Dan       HR       45
5     Dan       HR        0
6    Dave       HR        0

c = df1['Clients'].eq(0)
print(df1[~(df1.duplicated(['Name','Division'],keep=False) & c)])

     Name Division  Clients
1    Dave    Sales       15
2   Karen    Sales       10
3  Rachel       HR       20
4     Dan       HR       45
6    Dave       HR        0

这取决于数据的组织方式。。。如果您正在从csv中读取,您可以执行以下操作:

#Get the Data:
data = pd.read_csv("employees.csv") 

#Sort by Clients so the zeros are dropped instead of the Clients:
data.sort_values("Clients", inplace = True) 

#Drop any duplicates based on name:
data.drop_duplicates(subset ="Name", 
                     keep = False, inplace = True) 

这取决于数据的组织方式。。。如果您正在从csv中读取,您可以执行以下操作:

#Get the Data:
data = pd.read_csv("employees.csv") 

#Sort by Clients so the zeros are dropped instead of the Clients:
data.sort_values("Clients", inplace = True) 

#Drop any duplicates based on name:
data.drop_duplicates(subset ="Name", 
                     keep = False, inplace = True) 

那么,您是指任何一行有零个或任何重复项吗?不,只要删除任何一行有重复项(名称和除法出现两次),但只保留记录,其中客户端!=0.您可以尝试此df=df.drop_duplicates()那么您是指任何具有零或任何重复项的行吗?不,只需删除任何具有重复项的行(名称和除法显示两次),但仅保留客户端!=0.您可以尝试使用此df=df。drop_duplicates()是否将重复项的定义处理为(名称和部门)(不仅仅是名称)相同?我在添加
时使用了此解决方案。drop_duplicates(['Name','Division'))
完成了此任务。尝试添加第7行,其中包含Dave、HR和0,然后您将看到新添加的这一行也被删除了,它不是重复的。@SeaBean谢谢您的帮助。刚刚编辑了我的答案,以解决这个完美的现在!伟大的这是否将重复项的定义处理为(名称和部门)(不仅仅是名称)相同?我在添加
时使用了此解决方案。删除重复项(['Name','Division'))
,它就完成了任务。尝试添加Dave、HR和0的第7行,然后您将看到新添加的这一行也被删除了,它不是重复的。@SeaBean谢谢您的帮助。刚刚编辑了我的答案,以解决这个完美的现在!伟大的