如何根据现有数据框的日期间隔创建新数据框:
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
答案 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)