gpt4 book ai didi

python - 根据使用 Pandas 保留其他列值的列对 DataFrame 中的日期进行排序

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

我有一个像这样的数据集(这里的额外意味着多个额外的列):

>>> df = pd.DataFrame({'id_police':['p123','p123','p123','b123','b123'],
'dateeffe':['24/01/2018','24/11/2017','25/02/2018','24/02/2018','24/02/2018'],
'date_fin':['23/03/2018','23/12/2017','26/03/2018','25/02/2018','25/02/2018'],
'prime':[0,20,10,20,30],
'prime2':[0,30,10,20,0],
'extra':[12,12,13,15,20],
...
})
###
id_police dateeffe date_fin prime prime2 extra ...
0 p123 24/01/2018 23/03/2018 0 0 12 ...
1 p123 24/11/2017 23/12/2017 20 30 12 ...
2 p123 25/02/2018 26/03/2018 10 10 13 ...
3 b123 24/02/2018 25/02/2018 20 20 15 ...
4 b123 24/02/2018 25/02/2018 30 0 20 ...

我想在每一列 id_police 中对日期(例如 2017 然后 2018...)进行排序,另外,我必须在每个重复的 dateeffe 中保留最大素数并且date_fin 就像 3 和 4 中一样具有相同的 id_police

这是预期的输出:

  id_police    dateeffe    date_fin  prime  prime2  extra  ...
0 p123 24/11/2017 23/12/2017 20 30 12 ...
1 p123 24/01/2018 23/03/2018 0 0 12 ...
2 p123 25/02/2018 26/03/2018 10 10 13 ...
3 b123 24/02/2018 25/02/2018 30 20 15 ...

为了找到最大的 prime 和 prime2,我使用了这个:

df = df.groupby(['id_police','dateeffe','date_fin'],as_index=False).agg({'prime':'max','prime2':'max'})

这是我尝试过的,但是它把所有的东西都分组了,我失去了额外的列...

df1 = df.sort_values(['dateeffe','date_fin']).groupby('id_police', as_index=False).apply(lambda x: x) 

我到处都看了,非常感谢您的帮助,在此先感谢您!

最佳答案

检查输出first

df = df.groupby(['id_police','dateeffe','date_fin'],as_index=False).agg({'prime':'max','prime2':'max','extra':'first'})
df
Out[482]:
id_police dateeffe date_fin prime prime2 extra
0 b123 24/02/2018 25/02/2018 30 20 15
1 p123 24/01/2018 23/03/2018 0 0 12
2 p123 24/11/2017 23/12/2017 20 30 12
3 p123 25/02/2018 26/03/2018 10 10 13

更新

d={'prime':'max','prime2':'max'}
d1=dict.fromkeys(df.columns.difference(['id_police','dateeffe','date_fin','prime','prime2']),'first')
d.update(d1)
df=df.groupby(['id_police','dateeffe','date_fin'],as_index=False).agg(d)
Out[501]:
id_police dateeffe date_fin prime prime2 extra
0 b123 24/02/2018 25/02/2018 30 20 15
1 p123 24/01/2018 23/03/2018 0 0 12
2 p123 24/11/2017 23/12/2017 20 30 12
3 p123 25/02/2018 26/03/2018 10 10 13
df.dateeffe=pd.to_datetime(df.dateeffe)
df.date_fin=pd.to_datetime(df.date_fin)
df=df.sort_values(['id_police','dateeffe','date_fin'])

关于python - 根据使用 Pandas 保留其他列值的列对 DataFrame 中的日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55655264/

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