我无法使用date_range函数过滤所选内容中的日期。基本上,我的问题是如何使用date_range函数而不是手动输入范围?
我目前正在这样做:
newdf = newdf.loc['2019/12/1':'2019/12/5']
但是我宁愿以某种方式使用date_range函数:
newdf.loc[dateRange]
这是完整的代码:
import pandas as pd
import matplotlib.pyplot as plt
import datetime
df = pd.read_csv("EURCHF.csv", skipinitialspace=True)
newdf = df.loc[:,'Date':'Low']
dateRange = pd.date_range(start ='2019/12/12', end ='2019/12/20')
newdf = newdf.set_index(['Date'])
newdf = newdf.loc['2019/12/1':'2019/12/5']
newdf
#newdf.loc[dateRange]
以下是数据示例:
Date Time Open High Low
0 2019/6/27 10:00:00 1.11237 1.11254 1.11126
1 2019/6/27 14:00:00 1.11161 1.11375 1.10998
2 2019/6/27 18:00:00 1.11008 1.11056 1.10981
3 2019/6/27 22:00:00 1.11028 1.11072 1.10927
4 2019/6/28 02:00:00 1.10939 1.10967 1.10833
答案 0 :(得分:0)
您可以按以下方式使用.isin
方法:
import pandas as pd
import numpy as np
# create fake data
df = pd.DataFrame(data={'a': np.random.rand(32)},
index=pd.date_range('2019/01/01', '2019/02/01', freq='D' ))
df_filtered = df[df.index.isin(pd.date_range('2019/01/01', '2019/01/04', freq='D'))]
df_filtered
a
2019-01-01 0.179021
2019-01-02 0.224770
2019-01-03 0.185422
2019-01-04 0.067197
不过,我非常有信心df.loc[start_date:end_date]
是最理想的选择。