вытащить строку с максимальной датой из groupby в python pandas - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь вытащить максимальную дату из df в формате ниже

columns: index1 index2 col1

place1

      | 2018 | 5 | 
      | 2019 | 4 |
      | 2020 | 2 |

place2

      | 2016 | 9 |
      | 2017 | 8 |

place3

      | 2018 | 6 |
      | 2019 | 1 |

Я пытаюсь вытащить строки на максимальное количество лет, доступное для каждого места. В приведенном выше примере окончательный df будет:

place1 | 2020 | 2
place2 | 2017 | 8
place3 | 2019 | 1

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Я новичок ie в python, но, возможно, это может помочь:

import pandas as pd
data=[['place1','2018','5'],
     ['place1','2019','4'],
     ['place1','2020','2'],
     ['place2','2016','9'],
     ['place2','2017','8'],
     ['place3','2018','6'],
     ['place3','2019','1']]
df=pd.DataFrame(data,columns=['index1','index2','col1'])
df.set_index(['index1','index2'], inplace=True)
df.reset_index(level=1, inplace=True) 
df=df.sort_values(['index1','index2'],ascending=False).groupby('index1').first()
df.set_index('index2',append=True,inplace=True)
0 голосов
/ 02 августа 2020

Вы можете использовать dataframe.sort_values().groupby().last(), чтобы найти максимальное значение в group

В вашем случае вам нужно сделать

df.sort_values("index2").groupby("index1").last()

Я думаю, это может сработать для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...