python - 无法根据 python 中的用户输入从 csv 表中过滤数据
问题描述
我有一个看起来像这样的示例 csv 表
Start Time End Time Trip Duration Start Station End Station
01/01/17 15:09 01/01/17 15:14 321 A B
01/02/17 15:09 01/02/17 15:14 321 C D
12/03/17 15:09 12/03/17 15:14 321 E F
05/01/17 15:09 05/01/17 15:14 321 B D
17/02/17 15:09 17/02/17 15:14 321 C F
12/04/17 15:09 12/04/17 15:14 321 E H
13/05/17 15:09 13/05/17 15:14 321 S K
17/01/17 15:09 17/01/17 15:14 321 A D
我可以使用以下代码读取上述文件并获取月份和日期的值
df = pd.read_csv(sample.csv)
df['month'] = df['Start Time'].dt.month
df['day_of_week'] = df['Start Time'].dt.weekday_name
但是我有一个要求,要求用户输入月份或日期,然后根据用户输入的这些值,需要创建一个新数据,在该数据上将执行进一步的操作。
例如:如果用户输入一月,那么开始时间中的月份是一月,则显示与此相关的数据。新数据应该是这样的
Start Time End Time Trip Duration Start Station End Station
01/01/17 15:09 01/01/17 15:14 321 A B
05/01/17 15:09 05/01/17 15:14 321 B D
17/01/17 15:09 17/01/17 15:14 321 A D
如果用户输入一天,例如星期一(假设星期一的日期是 12),那么 o/p 应该是这样的
Start Time End Time Trip Duration Start Station End Station
12/03/17 15:09 12/03/17 15:14 321 E F
12/04/17 15:09 12/04/17 15:14 321 E H
然后在这些新表上需要进行进一步的操作/计算。
谁能告诉如何创建这个新的过滤数据
解决方案
一种方法是使用该calendar
模块获取月份和星期名称列表,然后使用简单的if else
语法通过用户输入过滤您的数据框:
import calendar
# Start by converting start time to proper datetime format:
df['Start Time'] = pd.to_datetime(df['Start Time'])
months = list(calendar.month_name)
days = list(calendar.day_name)
user_in = input('What do you want to filter by? ')
if user_in in months:
filtered = df[df['Start Time'].dt.strftime('%B').eq(user_in)]
elif user_in in days:
filtered = df[df['Start Time'].dt.strftime('%A').eq(user_in)]
else:
print('Invalid Input')
说user_in
是一月,那么filtered
数据框看起来像:
>>> filtered
Start Time End Time Trip Duration Start Station End Station
0 2017-01-01 15:09:00 01/01/17 15:14 321 A B
1 2017-01-02 15:09:00 01/02/17 15:14 321 C D
7 2017-01-17 15:09:00 17/01/17 15:14 321 A D
如果user_in
是星期一:
>>> filtered
Start Time End Time Trip Duration Start Station End Station
1 2017-01-02 15:09:00 01/02/17 15:14 321 C D
3 2017-05-01 15:09:00 05/01/17 15:14 321 B D
5 2017-12-04 15:09:00 12/04/17 15:14 321 E H
推荐阅读
- python - open3d 中的 pointcloud2 流可视化或其他在 python 中可视化 pointcloud2 的可能性
- ssh - 如何在从 VS 代码 ssh 时以 root 身份从远程服务器编辑文件?
- python - python可以从C头文件中加载定义吗?
- angular - NgRx Data - 如何以类型安全的方式连接到 addOne 成功操作?
- apache - 火狐返回 SSL_ERROR_BAD_MAC_READ
- android - 如何通过wifi在同一网络的应用程序之间进行通信?
- yii2 - 带有“无效段”的 Newrelic 代理跟踪失败
':停止时间(0)之后的开始时间(#####)` - javascript - 单击输入字段的填充将光标设置在行首,而不是行尾
- jdbc - 通过 Simba 的 JDBC 驱动程序执行涉及 MD5() 函数的查询时出错
- javascript - 反应 onClick 不适用于周边区域