如何从pandas dataframe列中选择日期间隔?

时间:2018-05-30 17:01:49

标签: python pandas dataframe

如何根据现有数据框的日期间隔创建新数据框:

df=pd.DataFrame([["01.01.18",32],
    ["01.01.18",8],
    ["01.01.18",12],
    ["01.01.18",77],
    ["02.01.18",99],
    ["03.01.18",78],
    ["04.01.18",89],
    ["02.02.18",85],
    ["10.03.18",35],
    ["13.04.18",81],
    ["03.02.18",97],
    ["29.03.18",90],
    ["08.04.18",7]],columns=["date","payment"])

如何创建日期值介于01.01.18和31.01.18之间的数据框,因此新的df将如下所示:

Date Payment 
01.01.18,   32
01.01.18,   8
01.01.18,   12
01.01.18,   77
02.01.18,   99
03.01.18,   78
04.01.18,   89

1 个答案:

答案 0 :(得分:0)

你需要:

df.set_index(pd.to_datetime(df['date'])).loc['2018-01-01':'2018-01-31'].reset_index(drop=True)

输出:

        date    payment
0   01.01.18    32
1   01.01.18    8
2   01.01.18    12
3   01.01.18    77

您可以继续使用原始日期格式以及下面的代码并获得相同的输出:

import datetime as dt
start = dt.datetime.strptime('01.01.18', '%d.%m.%y').strftime('%Y-%m-%d')
end = dt.datetime.strptime('31.01.18', '%d.%m.%y').strftime('%Y-%m-%d')
df.set_index(pd.to_datetime(df['date'])).loc[start:end].reset_index(drop=True)