应该是一个简单的,在查看任何现有的例子之后,不要随意使用它。
我正在尝试过滤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位置,而不是将字符串切片。
答案 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
如果您想进行任何其他基于日期时间的操作,您可以转换它们中的任何一个或两者。