首页 > 解决方案 > pandas - 将具有相同名称和不同缺失数据的多个列移动到单个列中,然后删除重复的列

问题描述

我有一个看起来像这样的数据框:

Col1  | Col2  | Col1  | Col3  | Col1  | Col4
  a   |   d   |       |   h   |   a   |   p
  b   |   e   |   b   |   i   |   b   |   l
      |   l   |   a   |   l   |       |   a
  l   |   r   |   l   |   a   |   l   |   x
  a   |   i   |   a   |   w   |       |   i
      |   c   |       |   i   |   r   |   c
  d   |   o   |   d   |   e   |   d   |   o

Col1在数据框中重复多次。在每个Col1中,都缺少信息。我需要创建一个包含每次Col1出现的所有信息的新列。

如何创建包含完整信息的列,然后删除以前的重复列?

多列中可能缺少某些信息。此脚本还打算在将来可能存在一、三、五或任意数量的重复Col1列时使用。

所需的输出如下所示:

Col2  | Col3  | Col4  | Col5
  d   |   h   |   p   |   a
  e   |   i   |   l   |   b
  l   |   l   |   a   |   a
  r   |   a   |   x   |   l
  i   |   w   |   i   |   a
  c   |   i   |   c   |   r
  o   |   e   |   o   |   d

我一直在看这个问题,但我不清楚如何Col1以完整的价值观保持期望。我可以删除多个同名的列,但我需要先创建一个包含完整信息的列。

标签: pythonpandasduplicatesmissing-datamelt

解决方案


首先将列中的空值替换nan为如下:

import numpy as np
df = df.replace(r'^\s*$', np.nan, regex=True)

然后,您可以使用groupby然后first()

df.groupby(level = 0, axis = 1).first() 

推荐阅读