pandas - 根据列值删除数据框中的重复行
pandas - drop duplicate rows in a dataframe based on a column value
我有一个这样的df:
>>> df1
col_1 col_2 size_col other_col
0 aaa abc 4 zxc
1 aaa abc 3 xcv
2 aaa abc 1 cvb
3 bbb bbc 7 vbn
4 bbb bbc 3 bnm
5 ccc cbc 1 asd
6 ddd dbc 9 sdf
7 ccc cbc 3 dfg
8 ccc cbc 1 fgh
想要这样的 df:
>>> df2
col_1 col_2 size_col other_col
0 aaa abc 4 zxc
3 bbb bbc 7 vbn
6 ddd dbc 9 sdf
7 ccc cbc 3 dfg
解释:
我想全部删除 col_1
和 col_2
具有相似值的位置,并保留 'size_col' 对于所有重复组最大的行。因此,从上面的示例中,对于 col_1
和 col_2
具有 aaa
和 abc
的行,我需要保留 size_col
具有最大值的行.或者换句话说,我需要按 col_1
和 col_2
列进行分组,然后对于每个组,只保留 other_col
对组具有最大值的行。
如何为大约 500 万行和 7 列的 df 高效地执行此操作?
使用:
df1.loc[df1.groupby(['col_1', 'col_2'])['size_col'].idxmax()]
我有一个这样的df:
>>> df1
col_1 col_2 size_col other_col
0 aaa abc 4 zxc
1 aaa abc 3 xcv
2 aaa abc 1 cvb
3 bbb bbc 7 vbn
4 bbb bbc 3 bnm
5 ccc cbc 1 asd
6 ddd dbc 9 sdf
7 ccc cbc 3 dfg
8 ccc cbc 1 fgh
想要这样的 df:
>>> df2
col_1 col_2 size_col other_col
0 aaa abc 4 zxc
3 bbb bbc 7 vbn
6 ddd dbc 9 sdf
7 ccc cbc 3 dfg
解释:
我想全部删除 col_1
和 col_2
具有相似值的位置,并保留 'size_col' 对于所有重复组最大的行。因此,从上面的示例中,对于 col_1
和 col_2
具有 aaa
和 abc
的行,我需要保留 size_col
具有最大值的行.或者换句话说,我需要按 col_1
和 col_2
列进行分组,然后对于每个组,只保留 other_col
对组具有最大值的行。
如何为大约 500 万行和 7 列的 df 高效地执行此操作?
使用:
df1.loc[df1.groupby(['col_1', 'col_2'])['size_col'].idxmax()]