Python 在多个条件下删除重复行
我有一个重复行的数据帧。有些列有数据,有些列有零。我希望保留包含数据的行,并消除包含零的行,但我还希望在只有零的情况下删除重复的行。这里有一个例子Python 在多个条件下删除重复行,python,pandas,Python,Pandas,我有一个重复行的数据帧。有些列有数据,有些列有零。我希望保留包含数据的行,并消除包含零的行,但我还希望在只有零的情况下删除重复的行。这里有一个例子 df = A B x 0 x 1 y 0 y 0 z 1 我希望是这样 A B x 1 y 0 z 1 我正在努力按层次删除重复项;首先保留列值不同于零的非零行,然后删除列值为零的行的重复项 谢谢使用排序\u值和参数保留class='last': df.sort_values(['A','B']).dro
df =
A B
x 0
x 1
y 0
y 0
z 1
我希望是这样
A B
x 1
y 0
z 1
我正在努力按层次删除重复项;首先保留列值不同于零的非零行,然后删除列值为零的行的重复项
谢谢使用
排序\u值
和参数保留class='last'
:
df.sort_values(['A','B']).drop_duplicates(subset='A', keep='last')
输出:
A B
1 x 1
3 y 0
4 z 1
更新负值:
df.assign(sortkey = df.B.ne(0))
.sort_values(['A','sortkey'])
.drop_duplicates(subset='A', keep='last')
使用
sort\u值
和参数keep='last'
:
df.sort_values(['A','B']).drop_duplicates(subset='A', keep='last')
输出:
A B
1 x 1
3 y 0
4 z 1
更新负值:
df.assign(sortkey = df.B.ne(0))
.sort_values(['A','sortkey'])
.drop_duplicates(subset='A', keep='last')
或者您可以使用
groupby
df.groupby('A',as_index=False).B.last()
Out[421]:
A B
0 x 1
1 y 0
2 z 1
或者您可以使用
groupby
df.groupby('A',as_index=False).B.last()
Out[421]:
A B
0 x 1
1 y 0
2 z 1
你试过什么了?。。。请给我们看看代码…我真的卡住了。什么都不试?我们不是来为您编写代码的,而是来帮助您编写代码的…那么您尝试了什么?。。。请给我们看看代码…我真的卡住了。什么都不试?我们不是来为您编写代码的,而是来帮助您编写代码的……出于好奇,这是可行的,但由于我也有负值,所以排序更为复杂。看来我需要按绝对值排序。@Juliannosambati添加了一个处理负数的更新。谢谢。我已经准备创建一个按绝对值排序的新列。看起来不错!出于好奇,这是可行的,但因为我也有负值,所以排序更为复杂。看来我需要按绝对值排序。@Juliannosambati添加了一个处理负数的更新。谢谢。我已经准备创建一个按绝对值排序的新列。看起来不错!