繁体   English   中英

如何使用for循环过滤Pandas数据框列中的字符串

[英]How to filter a string in a column of Pandas data frame using for loop

如何在 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循环较慢,最好尽可能避免

使用pd.to_datetimeDate列转换为datetime pd.to_datetime ,然后使用Series.dt.year仅提取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

其它的办法

df.Date = pd.to_datetime(df.Date)
df[df.Date.dt.isocalendar().year.eq(1998)]



        Date  Value
1 1998-05-03   1005
3 1998-01-05    448

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM