我有一个数据帧
date close
0 1997-10-22 8.4273
1 1998-02-09 5.4130
2 1998-04-30 5.4130
1 1998-02-20 4.4130
2 1998-04-30 3.4130
3 1999-07-09 9.8670
4 2000-02-25 11.4410
5 2001-01-29 8.7326
我想在 DateTime 列中分组年份但保留 close 的相等值 喜欢
date close
0 1997-10-22 8.4273
1 1998-02-09 5.4130
2 1998-04-30 5.4130
3 1999-07-09 9.8670
4 2000-02-25 11.4410
5 2001-01-29 8.7326
我试过这个:
x = df.loc[df.groupby(df.date.dt.year)["close"].idxmax()].reset_index(drop = True)
但它的输出是
date close
0 1997-10-22 8.4273
1 1998-02-09 5.4130
2 1999-07-09 9.8670
3 2000-02-25 11.4410
4 2001-01-29 8.7326
我能做什么?
答案 0 :(得分:1)
这是您的 DataFrame:
import pandas as pd
import datetime as dt
df = pd.DataFrame(
[
(dt.datetime(1997, 10, 22), 8.4273),
(dt.datetime(1998, 2, 9), 5.4130),
(dt.datetime(1998, 4, 30), 5.4130),
(dt.datetime(1998, 2, 20), 4.4130),
(dt.datetime(1998, 4, 30), 3.4130),
(dt.datetime(1999, 7, 9), 9.8670),
(dt.datetime(2000, 2, 25), 11.4410),
(dt.datetime(2001, 1, 29), 8.7326),
],
columns=['date', 'close']
)
您需要做的就是:
df = df[df.groupby(df.date.dt.year)['close'].transform('max') == df['close']]
结果是
print(df)
date close
0 1997-10-22 8.4273
1 1998-02-09 5.4130
2 1998-04-30 5.4130
5 1999-07-09 9.8670
6 2000-02-25 11.4410
7 2001-01-29 8.7326