开发者社区> 问答> 正文

panda—将多个具有相同名称和不同缺失数据的列移动到单个列中,然后删除重复的列

我有一个dataframe,它是这样的:

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在dataframe中重复多次。在每个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与完整的价值观。我可以删除相同名称的多个列,但我需要首先创建一个包含完整信息的列。 问题来源StackOverflow 地址:/questions/59384284/pandas-move-multiple-columns-with-the-same-name-and-different-missing-data-int

展开
收起
kun坤 2019-12-26 14:43:43 552 0
1 条回答
写回答
取消 提交回答
  • 首先用下面的nan替换列中的空值:

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

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

    df.groupby(level = 0, axis = 1).first() 
    
    2019-12-26 14:43:50
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载