如何使用python在不影响相应行的情况下,将行中的重复项交换为空白?

2024-04-24 19:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们在excel上有以下数据

Column1 | Column2 | Column3 | .... Column n
  A     |   10    |    a
  A     |   10    |    b
  A     |   10    |    c
  B     |   15    |    d
  B     |   15    |    e
  B     |   15    |    f
  C     |   20    |    g
  C     |   20    |    h
  .         
  .
  .

我想把它修改成

Column1 | Column2 | Column3 | .... Column n
  A     |   10    |    a
        |         |    b
        |         |    c
  B     |   15    |    d
        |         |    e
        |         |    f
  C     |   20    |    g
        |         |    h
  .         
  .
  .

我尝试使用drop_duplicates(来自pandas)技术,但它也删除了其他行

我可以手动完成这项任务,但我正试图通过使用python找到实现上述目标的方法,有什么想法吗


0条回答
网友
1楼 · 发布于 2024-04-24 19:54:34

您可以首先找到副本的索引

dup_index = df.duplicates().index

然后可以替换这些值

df.Column1.replace(dup_index,'')

如果您不希望像rchurt在评论中所说的那样使用空值,那么groupby()也是一个不错的选择,如果您不希望使用空值,并让数据保持原样

网友
2楼 · 发布于 2024-04-24 19:54:34

您可以将maskduplicated一起使用:

cols = ['Column1', 'Column2']
df[cols] = df[cols].mask(df.duplicated(cols), '')
df

输出:

  Column1 Column2 Column3
0       A      10       a
1                       b
2                       c
3       B      15       d
4                       e
5                       f
6       C      20       g
7                       h

相关问题 更多 >