Pythonパンダのgroupbyから最大日付の行をプルする

2020-08-02 python pandas dataframe

以下の形式で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

Answers

dataframe.sort_values().groupby().last()を使用できます group内の最大値を見つけるには

あなたの場合、あなたはしなければなりません

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

うまくいくと思います

私は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)

Related