Выбор столбца на основе даты - PullRequest
1 голос
/ 18 июня 2019

У меня есть следующий набор данных.

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  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 

Можеткто-нибудь помочь, как мы можем достичь этого в пандах.

Спасибо Anubhav

  • может быть использовать groupby ().
    data_u.set_index(['ID', 'Date'],inplace=True)
    data_u.sort_index(inplace=True)

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

это дает мнеколичество строк мультииндекса.

Но я хочу выбрать самый последний год всех идентификаторов.Количество записей> 500000

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете сделать следующее:

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 |
+---+----+------------+-------------+----+----+----+
...