首页 > 解决方案 > 考虑到使用 pandas 的 NaN 值,如何获取每列的最新值

问题描述

我有以下数据框

  |  Name  |  Year  |  COL1  |  COL2  |  COL3  |
------------------------------------------------
0 |    A   |  1980  |   NaN  |   NaN  |  9817  |
1 |    A   |  1981  |   NaN  |  1610  |  11487 |
2 |    A   |  1982  | 22.74  |   NaN  |  12256 |
3 |    A   |  1983  | 15.50  |   NaN  |  14214 |
4 |    B   |  1980  |   NaN  |  1580  |   NaN  |
5 |    B   |  1981  | 13.50  |  1603  |   NaN  |
6 |    B   |  1982  | 17.00  |  1610  |   NaN  |
7 |    B   |  1983  | 19.30  |   NaN  |   NaN  |
8 |    C   |  1980  | 12.00  |   NaN  |  1750  |
9 |    C   |  1981  | 15.50  |  1997  |  1790  |
10|    C   |  1982  | 16.36  |  2027  |  1790  |
11|    C   |  1983  | 22.74  |   NaN  |  1810  |

我需要得到上面数据框的以下数据。该数据是每个考虑列
的最新 ( ) 数据,并且by yearNameCOL1COl2COL3

  Name  |  COL1  |  COL2  |  COL3  |
------------------------------------------------
    A   | 15.50  |  1610  |  14214 |
    B   | 19.30  |  1610  |   NaN  |
    C   | 22.74  |  2027  |  1810  |

标签: pythonpandas

解决方案


用于GroupBy.last每组的最后一个非缺失值:

#if necessary
#df = df.sort_values(['Name','Year'])
df = df.groupby('Name', as_index=False).last()

推荐阅读