gpt4 book ai didi

Python 数据框 : Get alternative days based on month?

转载 作者:行者123 更新时间:2023-12-03 17:00:14 25 4
gpt4 key购买 nike

我有 df 列 salary_day

            salary_day
0 thursday
1 friday

我正在尝试为每一天提供替代日期。

对于 May 2020 :

五月的星期四: 7,14,21,28,五月星期五: 1,8,15,22,29
替代周四和周五的预期产量 May :

df
salary_day        req_dates
thursday 7,21
friday 1,15,29

对于 June 2020 :

六月的星期四: 4,11,18,25六月星期五: 5,12,19,26
由于五月有五个星期五,六月的第一个星期五不是替代日,应排除在外,而应考虑12,26。
June 月份替代周四和周五的预期产量:

df
salary_day        req_dates
thursday 4,18
friday 12,26




编辑 1:适用于所有工作日

五月
      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

最佳答案

我认为最干净和通用的方法是创建一个包含指定年份所有天数的帮助表。并创建额外的列:month, day_name, day .

然后检查哪个day_namesdf['salary_day ]`。

在此之后,我们检查 day不均匀,作者:day % 2 > 0 .

最后我们GroupBy.agg并加入 day作为 , 的字符串:

# create salary days to get altnerative days
days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
df = pd.DataFrame({'salary_day': days})

START_MONTH = 5
YEAR = 2020

def create_dates(y, month_start):
dates = pd.date_range(f'{y}-{str(month_start).zfill(2)}-01', f'{y}-12-31')
dates = pd.DataFrame({'dates': dates})
dates['month'] = dates['dates'].dt.month
dates['day_name'] = dates['dates'].dt.day_name().str.lower()
dates['day'] = dates['dates'].dt.day
return dates


def get_alternative_dates(salary_days, y, month_start):
df_dates = create_dates(y, month_start)

m = df_dates['day_name'].isin(salary_days)

months = df_dates[m].copy()
months['day'] = months['day'].astype(str)
months['rank_days'] = months.groupby('day_name')['day'].cumcount().add(1)

months = months[months['rank_days'].mod(2).ne(0)]
df_final = months.groupby(['month', 'day_name'])['day'].agg(','.join).reset_index()

return df_final

get_alternative_dates(df['salary_day'], YEAR, START_MONTH)

输出
    month  day_name      day
0 5 friday 1,15,29
1 5 thursday 7,21
2 6 friday 12,26
3 6 thursday 4,18
4 7 friday 10,24
5 7 thursday 2,16,30
6 8 friday 7,21
7 8 thursday 13,27
8 9 friday 4,18
9 9 thursday 10,24
10 10 friday 2,16,30
11 10 thursday 8,22
12 11 friday 13,27
13 11 thursday 5,19
14 12 friday 11,25
15 12 thursday 3,17,31

关于Python 数据框 : Get alternative days based on month?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62064023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com