gpt4 book ai didi

python - pandas dataframe groupby 并返回第 n 行,除非第 n 行不存在

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:22 25 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

    date        id          person                      latitude    longitude
0 2016-07-11 1 rob 41.395279 2.162126
1 2016-07-11 1 harry 51.485146 0.041339
2 2016-07-11 1 susan 51.496457 0.051234
3 2016-07-11 2 lenny 48.863281 2.339698
4 2016-07-11 2 wendy 51.522469 -0.148812
5 2016-07-11 3 john 51.490746 -0.022011

我想按日期和 ID 对这个数据框进行分组,然后为其他三列返回该组的第二行。如果该组只有一行,那么我希望它返回第一行(即不删除该组)。

目前我有以下内容,但这是在只有该组的一个实例的情况下出现的情况。

df_grouped = df.groupby(['date', 'id']).nth(1).reset_index()

我的目标输出是:

    date        id          person                      latitude    longitude
0 2016-07-11 1 harry 51.485146 0.041339
1 2016-07-11 2 wendy 51.522469 -0.148812
2 2016-07-11 3 john 51.490746 -0.022011

任何帮助将不胜感激!谢谢。

最佳答案

一种方法是使用apply 并根据每组的行数选取行:

df.groupby(['date', 'id']).apply(lambda g: g.iloc[1,:] if g.shape[0] >= 2 else g.iloc[0,:]).reset_index(drop = True)

# date id person latitude longitude
#0 2016-07-11 1 harry 51.485146 0.041339
#1 2016-07-11 2 wendy 51.522469 -0.148812
#2 2016-07-11 3 john 51.490746 -0.022011

关于python - pandas dataframe groupby 并返回第 n 行,除非第 n 行不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022943/

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