gpt4 book ai didi

python - Pandas 选择过去最近的日期

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

作为 pandas 的初学者,我想知道如何选择过去的最近日期?例如。我有一个 dataframe 如下:

               Terminart                        Info     Datum  Ergebnis
0 Hauptversammlung NaN 22.06.16 NaN
1 Jahresabschluss 2015 10.03.16 NaN
2 Quartalszahlen Q3 2015 28.10.15 NaN
3 Quartalszahlen Q2 2015 29.07.15 NaN
4 Hauptversammlung NaN 05.05.15 NaN
5 Quartalszahlen Q1 2015 29.04.15 NaN
6 Bilanzpressekonferenz 2014 12.03.15 NaN
7 Bilanzpressekonferenz Jahrespressekonferenz 2015 12.03.15 NaN


我可以使用 df.loc() 选择 Terminart,即:

df.loc[df['Terminart'] == 'Hauptversammlung']

只选择两行(这是正确的)。


但是,如何选择过去的 最近日期?它会是这里的第一行 ( 06/22/16) 吗?默认情况下,数据框未排序。

最佳答案

您可以转换to_datetime column Datum 然后首先过滤较低的无差异(timedelta=0),然后通过 idxmax 找到最大值的索引:

注意:为了更好地测试,示例中的最后日期时间已更改

import pandas as pd
import datetime as dt

print (df)
Terminart Info Datum Ergebnis
0 Hauptversammlung NaN 22.06.16 NaN
1 Jahresabschluss 2015 10.03.16 NaN
2 Quartalszahlen Q3 2015 28.10.15 NaN
3 Quartalszahlen Q2 2015 29.07.15 NaN
4 Hauptversammlung NaN 05.05.15 NaN
5 Quartalszahlen Q1 2015 29.04.15 NaN
6 Bilanzpressekonferenz 2014 12.03.15 NaN
7 Bilanzpressekonferenz Jahrespressekonferenz 2015 19.07.16 NaN
df['Datum'] = pd.to_datetime(df.Datum, format='%d.%m.%y')

date = dt.datetime.now().date()
print (date)
2016-07-17

diff = (df.Datum - date)
print (diff)
0 -25 days
1 -129 days
2 -263 days
3 -354 days
4 -439 days
5 -445 days
6 -493 days
7 2 days
Name: Datum, dtype: timedelta64[ns]

indexmax = (diff[(diff < pd.to_timedelta(0))].idxmax())

print (df.ix[[indexmax]])
Terminart Info Datum Ergebnis
0 Hauptversammlung NaN 2016-06-22 NaN

关于python - Pandas 选择过去最近的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420024/

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