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谢谢您的帮助。刚刚编辑了我的答案,以解决这个完美的现在!伟大的