根据日期选择列

时间:2019-06-18 08:01:24

标签: python-3.x multi-index

我有以下数据集。

ID  Date         description V1  V2  V3
1   31-Jan-2013  Des1         10 20  30
1   31-Jan-2013  Des2         20 30 20
1   31-jan-2014  Des1         56 30 20
1   31-jan-2014  des2         30 40 60
2   31-dec-2013  Decc1         10 20  30
2   31-dec-2013  Decc2         20 30 20
2   31-dec-2014  Decc1         56 30 20
2   31-dec-2014  decc2         30 40 60 

我只想提取ID的最新年份值。

预期的输出。

ID  Date         description V1  V2  V3
1   31-jan-2014  Des1         56 30 20
1   31-jan-2014  des2         30 40 60
2   31-dec-2014  Decc1         56 30 20
2   31-dec-2014  decc2         30 40 60 

任何人都可以帮忙,如何在熊猫中实现这一目标。

谢谢 阿努巴夫

  • 可以使用groupby()。
    data_u.set_index(['ID', 'Date'],inplace=True)
    data_u.sort_index(inplace=True)

    data_u.groupby(data_u.index).index.agg(['count'])

这给了我多指标的行数。

但是我想选择所有ID的最新年份。记录数> 500000

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

df['Date'] = pd.to_datetime(df['Date'])
df[df.apply(lambda x : x['Date'] == df[(df['ID'] == x['ID'])]['Date'].max() , axis =1)]

输出

+---+----+------------+-------------+----+----+----+
|   | ID |    Date    | description | V1 | V2 | V3 |
+---+----+------------+-------------+----+----+----+
| 2 |  1 | 2014-01-31 | Des1        | 56 | 30 | 20 |
| 3 |  1 | 2014-01-31 | des2        | 30 | 40 | 60 |
| 6 |  2 | 2014-12-31 | Decc1       | 56 | 30 | 20 |
| 7 |  2 | 2014-12-31 | decc2       | 30 | 40 | 60 |
+---+----+------------+-------------+----+----+----+