python - 如何使用 for 循环过滤 Pandas 数据框列中的字符串
问题描述
如何在 Pandas 数据帧的字符串过滤中使用“for”循环(例如“ for i in range(1996,2000,1) ”)?
我有一个这样的数据框:
Date Value
07/09/1997 505
05/03/1998 1005
03/02/2000 747
01/05/1998 448
06/08/1996 57
09/11/2000 673
我喜欢使用' for i in range(1996,2000,1) '循环从'Date'列中过滤'1998'并创建一个新的DF,使其看起来像这样:
Date Value
05/03/1998 1005
01/05/1998 448
解决方案
for
循环比较慢,如果可能的话最好避免。
将Date
列转换为datetime
using pd.to_datetime
,然后仅提取year
using Series.dt.year
:
In [2441]: df.Date = pd.to_datetime(df.Date)
In [2446]: df = df[df.Date.dt.year.eq(1998)]
In [2447]: df
Out[2447]:
Date Value
1 1998-05-03 1005
3 1998-01-05 448
此外,根据@CainãMaxCouto-Silva 的评论:
您也可以过滤一系列年份:
In [2451]: df[df.Date.dt.year.isin(range(1996,2000))]
Out[2451]:
Date Value
0 1997-07-09 505
1 1998-05-03 1005
3 1998-01-05 448
4 1996-06-08 57
推荐阅读
- reactjs - 在阿波罗查询后发送道具
- python - for循环中的熊猫get_dummies
- elixir - Elixir, Absinthe 如何在与苦艾酒约会后创建用户?
- java - NamedParameterJdbcTemplate 不支持 SUM()?
- list - Haskell中整数列表的递归排序算法
- java - 在我使用 for 循环填充数组后,数组出现了空值
- c++ - 如何解决cpp文件的这个错误
- android - 如何使用 gpio-keys 中断从睡眠中唤醒系统
- javascript - 每个类实例的闭包函数 (JavaScript)
- asp.net-mvc - 在 URL 中使用点