拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何在条件下使用drop_duplicates()?

如何在条件下使用drop_duplicates()?

白鹭 - 2022-01-23 2090 0 0

我有一个由两列组成的资料框。A列由字符串组成,B列由数字组成。A 列有我想洗掉的重复项。但是,我只想保留 B 列中编号最高的那些重复项。这是我的资料框的示例:

 columnA | columnB
---------------------
 a       | 1
 a       | 2
 b       | 2
 b       | 1

我想要的是这个:

 columnA | columnB
---------------------
 a       | 2
 b       | 2

使用 drop_duplicates()

uj5u.com热心网友回复:

您可以descending根据“columnB”顺序对资料进行排序,并drop_duplicates()在 columnA 上使用,保持第一次出现:

df.sort_values(by='columnB',ascending=False).drop_duplicates('columnA',keep='first')

   columnA  columnB
13       d      555
27       h        6
16       f        6
6        c        3
1        a        2
2        b        2
15       e        1

示例资料(比您的示例略有增强):

df.to_dict()

{'columnA': {0: 'a',
  1: 'a',
  2: 'b',
  3: 'b',
  4: 'c',
  5: 'c',
  6: 'c',
  7: 'd',
  8: 'd',
  9: 'd',
  10: 'd',
  11: 'd',
  12: 'd',
  13: 'd',
  14: 'e',
  15: 'e',
  16: 'f',
  17: 'f',
  18: 'f',
  19: 'f',
  20: 'f',
  21: 'f',
  22: 'h',
  23: 'h',
  24: 'h',
  25: 'h',
  26: 'h',
  27: 'h'},
 'columnB': {0: 1,
  1: 2,
  2: 2,
  3: 1,
  4: 1,
  5: 2,
  6: 3,
  7: 33,
  8: 223,
  9: 3,
  10: 2,
  11: 1,
  12: 3,
  13: 555,
  14: 1,
  15: 1,
  16: 6,
  17: 5,
  18: 4,
  19: 3,
  20: 2,
  21: 1,
  22: 1,
  23: 2,
  24: 3,
  25: 4,
  26: 5,
  27: 6}}

uj5u.com热心网友回复:

按 a 列对资料帧进行分组,仅取 b 列的最大值并通过此方法创建新资料帧也有帮助,因为它保留了原始资料帧的原样。df.groupby('columnA')['columB'].max()

uj5u.com热心网友回复:

只需按“A”分组并取最大的“B”

df.groupby('A').max()
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *