切片字符串以过滤pandas数据帧

时间:2018-04-23 23:36:07

标签: python string pandas datetime

应该是一个简单的,在查看任何现有的例子之后,不要随意使用它。

我正在尝试过滤df,其中df中的日期/时间等于我在另一个名为“date”的变量中的日期/时间。

这两个都存储为字符串。

df ['DATE']的格式如下:

2017/11/28 14:19:58

日期格式如下:

11/28/2017 14:19

我希望这些返回一个匹配。

df = df[df['DATE'][:-3] == date]

我得到的错误是:

raise IndexingError('Unalignable boolean Series provided as '
pandas.core.indexing.IndexingError: Unalignable boolean Series provided 
as indexer (index of the boolean Series and of the indexed object do not match

似乎解释器会将其视为我引用df位置,而不是将字符串切片。

2 个答案:

答案 0 :(得分:1)

您需要使用pd.Series.str访问器进行切片:

from datetime import datetime

s = pd.Series(['2016/09/25 12:29:18', '2017/11/28 14:19:58', '2018/01/02 03:35:12'])
date = '11/28/2017 14:19'

res = (s.str[:-3] == datetime.strptime(date, '%m/%d/%Y %H:%M').strftime('%Y/%m/%d %H:%M'))

print(res)

0    False
1     True
2    False
dtype: bool

答案 1 :(得分:0)

df
    DATE
0   2017/11/21 14:19:58
1   2017/11/20 14:19:58
2   2017/11/21 12:19:58

date = '11/20/2017 14:19'

df[df['DATE'].apply(lambda x :pd.to_datetime(x,infer_datetime_format=True).strftime('%m/%d/%Y %H:%M'))==date]

    DATE
1   2017/11/20 14:19:58

如果您想进行任何其他基于日期时间的操作,您可以转换它们中的任何一个或两者。

相关问题