在datetime列中查找日期名称,并将用户输入作为工作日名称作为“字符串”

时间:2018-04-12 13:27:40

标签: python pandas

我有一个名为“开始时间”的日期时间列

enter image description here

我正在尝试根据用户输入查找具有特定工作日名称的条目。

用户输入是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,开始时间,结束时间,旅行持续时间,起始站,终点站,用户类型] 指数:[]

2 个答案:

答案 0 :(得分:1)

使用相同格式的weekday_namestrftime

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