如何通过匹配内容列表搜索Pandas中的特定单元格

时间:2018-02-07 05:48:22

标签: python pandas

enter image description here

我是python的新手并试图用python创建一个小程序。 我的要求: 我有一个这样的列表: 假期= ['2018年1月1日','2018年1月26日','2018年3月2日','2018年3月30日']

我有一个像这样打印的pandas DataFrame: enter image description here

现在我想在数据框中搜索与我的列表匹配的日期,例如“2018年1月26日”,并希望将搜索结果保存在单独的数据框中。

我没有得到正确的方法来做到这一点。请建议

2 个答案:

答案 0 :(得分:1)

您可以使用DataFrame.query方法

holiday = ['1 January 2018','26 January 2018','2 March 2018','30 March 2018']
df.query('date==@holiday')

答案 1 :(得分:1)

<强> 1。字符串匹配

如果您的日期格式匹配,您可以直接进行字符串匹配(虽然它是一种粗俗的方式)

df2 = df[df['date'].isin(holiday)]

<强> 2。解析日期时间(正确方式)

首先解析日期,然后进行比赛!

一个。解析df日期

df['date'] = pd.to_datetime(df['date'], format='%d %B %Y')

湾解析列表中的日期

import datetime as dt
holiday = ['1 January 2018','26 January 2018','2 March 2018','30 March 2018']
holiday_parsed = [dt.strptime(i, format='%d %B %Y') for i in holiday]

然后进行过滤 -

df2 = df[df['date'].isin(holiday_parsed)]

.isin()是一种熊猫便利方法,可让您使用列表搜索您的pandas系列。

希望有所帮助!