gpt4 book ai didi

python - Pandas Dataframe 的复杂子集

转载 作者:行者123 更新时间:2023-11-28 22:15:26 24 4
gpt4 key购买 nike

我有一个数据框,其中一列中有各种值。我想确保数据框中的每个唯一列元素都有 3 个最新条目。

我有:

      Group      Date        Value
A 10/1/2017 4.4
A 8/3/2017 9.2
A 5/3/2017 8.4
A 4/4/2017 4.4
B 12/1/2015 4.4
B 8/3/2015 9.2
B 5/4/2015 8.4
B 4/5/2015 4.4

我想要:

      Group      Date        Value
A 10/1/2017 4.4
A 8/3/2017 9.2
A 5/3/2017 8.4
B 12/1/2015 4.4
B 8/3/2015 9.2
B 5/4/2015 8.4

日期是日期时间。我不知道如何在这篇文章中以其他方式表示。

我可以用下面的代码得到这个:

new_df = pd.DataFrame()
for group in df['Group'].unique():

temp_df = df[df['Group'] == group]
temp_df = temp_df[0:3]

if new_df.empty:

new_df = temp_df

else:

new_df.append(temp_df)

是否有更 pythonic 的方法来做到这一点?

提前致谢。

最佳答案

以下情况如何:

df.sort_values(by='Date', ascending=False).groupby('Group').head(3)

在我的小测试数据集上返回以下内容(我使用 head(2)):

    Group   Date
1 c 2050-01-01
8 a 2032-02-03
0 a 2030-01-01
9 c 2029-01-01
10 b 2018-01-01
2 b 2017-02-03

如您所见,各个组的值不再很好地组合在一起。我们可以通过先按“组”排序然后按“日期”排序来解决此问题:

df.sort_values(by=['Group', 'Date'], ascending=[True,False]).groupby('Group').head(3)


Group Date
8 a 2032-02-03
0 a 2030-01-01
10 b 2018-01-01
2 b 2017-02-03
1 c 2050-01-01
9 c 2029-01-01

关于python - Pandas Dataframe 的复杂子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com