首页 > 解决方案 > Pandas 按列分组并为每列获取不同行中的非空值

问题描述

我有一个有趣的问题,我没有在 Pandas 中获得任何内置解决方案。

我有如下数据:

A B    C    D    E     F
1 null null Red  null  12
1 89   76   Red  null  null
1 null null null null  12

我正在尝试获得如下输出:

1 89 76 Red null 12

现在,这些数据是来自不同时间的消息。许多消息属于单个事务。

因此,假设 A 是交易的标识符。一些具有相同标识符的消息具有 B 列的值,有些具有 C 列的值。

所以,我想按唯一标识符分组,然后获取每列的非空值。

所以,这是一个分组然后聚合的任务。但与计数或类似的事情不同,我真的在创建一个新行。

我没有在熊猫中找到这样做的方法。非常感谢任何帮助,谢谢!

示例:>

    A   B        C       D
    1   null    null    100
    1   90      null    null
    2   null    1000    999
    1            80 
    2   1000    null    799

 df.groupby('A').first()
      B     C    D
A
1  null  null  100
2  null  1000  999

但所需的输出是:

     B     C    D
A
1  90     80  100
2  1000  1000  999

标签: pythonpandaspandas-groupbypandasql

解决方案


推荐阅读