要按日期范围筛选数据,需要使用pandas中的DateOffset和pd.date_range方法。
步骤如下:
- 读取数据,将日期列转换成datetime格式
import pandas as pd
df = pd.read_csv('data.csv')
df['dates'] = pd.to_datetime(df['dates'])
- 按照日期范围筛选数据
使用pd.date_range方法生成一个日期范围,再使用DataFrame的isin方法找到该范围内的所有数据。
比如我们想筛选2019年1月1日至2019年3月31日的数据,代码如下:
date_range = pd.date_range(start='2019-01-01', end='2019-03-31')
selected_data = df[df['dates'].isin(date_range)]
以上代码会返回包含日期在范围内的所有行的DataFrame。如果想只返回特定列的数据,则需要在DataFrame筛选中指定需要的列名。
另外也可以使用DataFrame的loc方法来筛选数据,代码如下:
selected_data = df.loc[(df['dates'] >= '2019-01-01') & (df['dates'] <= '2019-03-31')]
这里使用了Python的逻辑运算符 &,生成一个包含符合筛选条件的所有行的DataFrame。
下面给出一个完整的示例代码,该代码实现了针对某个股票的历史行情数据按日期范围进行筛选:
import pandas as pd
# 读取数据,将日期列转换成datetime格式
df = pd.read_csv('stock_history.csv')
df['date'] = pd.to_datetime(df['date'])
# 筛选某个股票在2019年1月1日至2019年3月31日的行情数据
date_range = pd.date_range(start='2019-01-01', end='2019-03-31')
selected_data = df[df['date'].isin(date_range) & (df['symbol'] == 'AAPL')]
以上代码中的file.csv文件是一个包含多个股票历史行情数据的CSV文件,具体内容如下:
symbol,date,open,high,low,close,volume
AAPL,2019-01-01,158.53,159.36,156.48,157.92,37039737
AAPL,2019-01-02,154.89,158.85,154.23,157.74,91312270
...
该示例代码将会筛选出股票代号为AAPL的所有历史行情数据,同时按照日期范围将数据进行了筛选。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas 按日期范围筛选数据的实现 - Python技术站