栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-选择两个日期之间的DataFrame行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-选择两个日期之间的DataFrame行

有两种可能的解决方案:

使用布尔型掩码,然后使用

df.loc[mask]

将日期列设置为
DatetimeIndex
,然后使用
df[start_date : end_date]

使用布尔型掩码:

确保

df['date']
dtype
系列
datetime64[ns]

df['date'] = pd.to_datetime(df['date'])  

制作一个布尔型面具。

start_date并且end_date
可以
datetime.datetimeS
np.datetime64S
pd.TimestampS
,甚至日期时间字符串:

#greater than the start date and smaller than the end datemask = (df['date'] > start_date) & (df['date'] <= end_date)

选择子Dataframe:

df.loc[mask]

或重新分配给 df

df = df.loc[mask]

例如,

import numpy as npimport pandas as pddf = pd.Dataframe(np.random.random((200,3)))df['date'] = pd.date_range('2000-1-1', periods=200, freq='D')mask = (df['date'] > '2000-6-1') & (df['date'] <= '2000-6-10')print(df.loc[mask])

输出

 0         1         2       date153  0.208875  0.727656  0.037787 2000-06-02154  0.750800  0.776498  0.237716 2000-06-03155  0.812008  0.127338  0.397240 2000-06-04156  0.639937  0.207359  0.533527 2000-06-05157  0.416998  0.845658  0.872826 2000-06-06158  0.440069  0.338690  0.847545 2000-06-07159  0.202354  0.624833  0.740254 2000-06-08160  0.465746  0.080888  0.155452 2000-06-09161  0.858232  0.190321  0.432574 2000-06-10

使用DatetimeIndex:

如果你打算按日期进行很多选择,则将·首先设置为索引可能会更快 。然后,你可以使用按日期选择行 ·。

import numpy as npimport pandas as pddf = pd.Dataframe(np.random.random((200,3)))df['date'] = pd.date_range('2000-1-1', periods=200, freq='D')df = df.set_index(['date'])print(df.loc['2000-6-1':'2000-6-10'])

输出:

        0         1         2date   2000-06-01  0.040457  0.326594  0.492136    # <- includes start_date2000-06-02  0.279323  0.877446  0.4645232000-06-03  0.328068  0.837669  0.6085592000-06-04  0.107959  0.678297  0.5174352000-06-05  0.131555  0.418380  0.0257252000-06-06  0.999961  0.619517  0.2061082000-06-07  0.129270  0.024533  0.1547692000-06-08  0.441010  0.741781  0.4704022000-06-09  0.682101  0.375660  0.0099162000-06-10  0.754488  0.352293  0.339337

相反,虽然Python列表索引(例如seq[start:end]包括start但不包括),但endPandas 如果在索引中,则在结果中df.loc[start_date : end_date]包括两个端点。但是,既不是start_date也不end_date是必须包含在索引中。

还要注意,

pd.read_csv
parse_dates
参数具有可用于将date列解析为
datetime64s
的参数。因此,如果使用
parse_dates
,则无需使用
df['date'] = pd.to_datetime(df['date'])



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号