我有一个名为“开始时间”的日期时间列
我正在尝试根据用户输入查找具有特定工作日名称的条目。
用户输入是String,可以是 星期天,星期一,......星期六。因此,如果输入星期日,我想找到所有星期日作为日期的条目,无论月份或年份。
这是我的代码:
user_day = input('Input the name of the day.user_day.')
print(df[df['Start Time'].dt.weekday == dt.datetime.strptime(user_day, '%A')])
输出是: 空DataFrame 列:[未命名:0,开始时间,结束时间,旅行持续时间,起始站,终点站,用户类型] 指数:[]
答案 0 :(得分:1)
使用相同格式的weekday_name
或strftime
:
print(df[df['Start Time'].dt.weekday_name == user_day])
或者:
print(df[df['Start Time'].dt.strftime('%A') == user_day])
验证强>:
df = pd.DataFrame({'Start Time':pd.date_range('2015-01-01 15:02:45', periods=10)})
print (df)
Start Time
0 2015-01-01 15:02:45
1 2015-01-02 15:02:45
2 2015-01-03 15:02:45
3 2015-01-04 15:02:45
4 2015-01-05 15:02:45
5 2015-01-06 15:02:45
6 2015-01-07 15:02:45
7 2015-01-08 15:02:45
8 2015-01-09 15:02:45
9 2015-01-10 15:02:45
user_day = 'Monday'
print(df[df['Start Time'].dt.weekday_name == user_day])
Start Time
4 2015-01-05 15:02:45
print (df['Start Time'].dt.weekday_name)
0 Thursday
1 Friday
2 Saturday
3 Sunday
4 Monday
5 Tuesday
6 Wednesday
7 Thursday
8 Friday
9 Saturday
Name: Start Time, dtype: object
print (df['Start Time'].dt.strftime('%A'))
0 Thursday
1 Friday
2 Saturday
3 Sunday
4 Monday
5 Tuesday
6 Wednesday
7 Thursday
8 Friday
9 Saturday
Name: Start Time, dtype: object
答案 1 :(得分:0)
pandas.Series.dt.weekday
:星期一= 0的星期几,
星期日= 6 pandas.Series.dt.weekday_name
:一周中的一天的名字(例如:星期五)注意用户输入。您正在加载string
,您无需使用datetime
将此类字符串转换为strptime
。
您只需要将DF中weekday_name
的{{1}}与用户输入相匹配即可。这是一个字符串匹配。
datetimelike