pandaps:如何使用两个条件筛选datetime列

2024-06-16 10:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个datetime列,我正在尝试查找具有特定 基于用户输入的工作日名称和月份。用户输入是一个字符串,可以是星期日、星期一、星期六和月、一月、二月、六月。在

    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)获取月份名称,请执行以下操作:

^{pr2}$

要根据以前的用户输入(user\u day)获取工作日名称,请执行以下操作:

 df[df['Start Time'].dt.weekday_name == user_day]

每一个处理一个用户的案例都选择了要么是月份名称要么是工作日名称,我正在努力解决一个覆盖一个案例的情况,月份名称(字符串)和星期日名称(字符串)都是基于这两个选择派生出来的。在


Tags: 字符串用户名称timestartendsubscriberst
2条回答

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

与用户输入进行比较

^{pr2}$

过滤匹配用户输入的数据帧:

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  

只需使用&并按这两个条件进行筛选:

df[(df['Start Time'].dt.month == dt.datetime.strptime(user_month, '%B').month) & \
   (df['Start Time'].dt.weekday_name == user_day)]

相关问题 更多 >