我有一个datetime列,我正在尝试查找具有特定条目的条目 工作日名称和月份基于用户输入。用户输入是字符串,可以是星期日,星期一,......星期六和月,1月,2月,... 6月。
Unnamed: 0 Start Time End Time Trip Duration Start Station End Station User Type
0 1621326 2017-06-21 08:36:34 2017-06-21 08:44:43 489.066 14th & Belmont St NW 15th & K St NW Subscriber
1 482740 2017-03-11 10:40:00 2017-03-11 10:46:00 402.549 Yuma St & Tenley Circle NW Connecticut Ave & Yuma St NW Subscriber
2 1330037 2017-05-30 01:02:59 2017-05-30 01:13:37 637.251 17th St & Massachusetts Ave NW 5th & K St NW Subscriber
根据以前的用户输入(user_month)获取月份名称:
df[df['Start Time'].dt.month == dt.datetime.strptime(user_month, '%B').month]
根据以前的用户输入(user_day)获取工作日名称:
df[df['Start Time'].dt.weekday_name == user_day]
每个处理一个用户案例的选择都是月份名称或工作日名称,我正在努力解决一个案例,包括月份名称(字符串)和工作日名称(字符串)都是基于这两种选择得出的。
答案 0 :(得分:0)
IIUC:您可以从日期列中自定义提取日期和月份,然后连接您的输入。
pd.to_datetime(df['Start Time']).dt.strftime('%A %B')
0 Wednesday June
1 Saturday March
2 Tuesday May
Name: Start Time, dtype: object
与用户输入比较
pd.to_datetime(df['Start Time']).dt.strftime('%A %B') == 'Wednesday June'
0 True
1 False
2 False
Name: Start Time, dtype: bool
过滤匹配用户输入的数据框:
df[pd.to_datetime(df['Start Time']).dt.strftime('%A %B') == 'Wednesday June']
Unnamed: 0 Start Time End Time Trip Duration \
0 1621326 2017-06-21 08:36:34 2017-06-21 08:44:43 489.066
Start Station End Station User Type
0 14th & Belmont St NW 15th & K St NW Subscriber
答案 1 :(得分:0)
只需使用&
并按以下条件进行过滤:
df[(df['Start Time'].dt.month == dt.datetime.strptime(user_month, '%B').month) & \
(df['Start Time'].dt.weekday_name == user_day)]