Python 如何从数据框列中选择日期间隔?

Python 如何从数据框列中选择日期间隔?,python,pandas,dataframe,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], ["

如何基于现有数据帧的日期间隔创建新数据帧:

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
你需要:

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)

对于不在现有数据框中的天数,您希望支付什么?如果您能展示一个预期输出的样本,这可能会有所帮助。@jpp更新了问题
df[(df.date>=“01.01.18”)&(df.date)您可以查看标记的副本。请注意,
.ix
已经贬值,所以使用
.loc
@jpp好吧,该问题的每个答案都有.ix解决方案(因为它被贬值了,所以很混乱),可能值得更新这个问题或创建另一个问题,像这样。谢谢,为什么输出没有02.01.18、03.01.18、04.01.18日期的值?@user40这是因为
pd.to_datetime()
那么我该如何包括这些值呢?它们在“2018-01-01”范围内:“2018-01-31”@user40,很好。请参见编辑。dt是什么?谢谢