如何使用pd.date_range过滤行?

时间:2019-12-30 18:19:38

标签: pandas

我无法使用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

1 个答案:

答案 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]是最理想的选择。