列salary_day
のdfがあります
salary_day
0 thursday
1 friday
毎日別の日付を表示しようとしています。
May 2020
の場合:
5月の木曜日:7,14,21,28
、5月の金曜日:1,8,15,22,29
May
の月の代替木曜日と金曜日の予想される出力:
df
salary_day req_dates
thursday 7,21
friday 1,15,29
June 2020
の場合:
6月の木曜日:4,11,18,25
6月金曜日:5,12,19,26
5月には5金曜日があるため、6月の最初の金曜日は代替日ではなく、除外する必要があり、12,26を考慮する必要があります。
June
の月の代替木曜日と金曜日の予想出力:
df
salary_day req_dates
thursday 4,18
friday 12,26
Edit1:すべての平日
5月の
salary_day req_dates
0 Monday 4,18
1 Tuesday 5,19
2 Wednesday 6,20
3 Thursday 7,21
4 Friday 1,15,29
5 Saturday 2,16,30
6 Sunday 3,17,31
これは私のために働きました:
# for read_clipboard()
'''
salary_day
thursday
friday
'''
import pandas as pd
df = pd.read_clipboard()
print(df)
。
salary_day
0 thursday
1 friday
。
import calendar
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
year = 2020; month = 5
monthcal = c.monthdatescalendar(year,month)
fridays = [(str(day)[-2:]) for week in monthcal for day in week if \
day.weekday() == calendar.FRIDAY and \
day.month == month]
thursdays = [(str(day)[-2:]) for week in monthcal for day in week if \
day.weekday() == calendar.THURSDAY and \
day.month == month]
# Friday will be the first salary day of the month only if it occours on 1st
if int(thursdays[0]) < int(fridays[0]):
fridays = fridays[1:]
df['req_dates'] = ''
print(df)
df.loc[df['salary_day'] == 'thursday', 'req_dates'] = ','.join(thursdays[::2])
df.loc[df['salary_day'] == 'friday', 'req_dates'] = ','.join(fridays[::2])
出力:
salary_day req_dates
0 thursday 07,21
1 friday 01,15,29
6月の場合:
year = 2020; month = 6
出力:
salary_day req_dates
0 thursday 04,18
1 friday 12,26