繁体   English   中英

从周一到周二的 dataframe 获取周日和周六的日期

[英]To get sunday's and saturday's date from a dataframe which has dates from Monday to tuesday

我有以下 dataframe

    0
0   2022-07-25
1   2022-07-26
2   2022-07-27
3   2022-07-28
4   2022-07-29

这是从星期一到星期二。 我需要通过同样计算星期一 -1 和星期一 -2 将之前的星期日日期 2022-07-24 和星期六 2022-07-23 添加到 dataframe 中。 请帮忙

您可以pd.DateTime模块获取列中每个日期的上一个周末日期。

创建数据

df = pd.DataFrame({'Date': ['2022-07-25','2022-07-26','2022-07-27','2022-07-28','2022-07-29']})
df['Date'] = pd.to_datetime(df['Date'])

计算周六和周日的日期

sat, sun = 5, 6
# Day of week for saturday : 5
df['Saturday_prev'] = df['Date'] - pd.to_timedelta((df['Date'].dt.dayofweek - sat)%7, unit='d')
# Day of week for Sunday : 6
df['Sunday_prev'] = df['Date'] - pd.to_timedelta((df['Date'].dt.dayofweek - sun)%7, unit='d')

Output:

这给了我们预期的 output:

        Date Saturday_prev Sunday_prev
0 2022-07-25    2022-07-23  2022-07-24
1 2022-07-26    2022-07-23  2022-07-24
2 2022-07-27    2022-07-23  2022-07-24
3 2022-07-28    2022-07-23  2022-07-24
4 2022-07-29    2022-07-23  2022-07-24

对于各种日期,程序给你预期的output

df = pd.DataFrame({'Date': ['2022-08-05','2022-08-10','2022-08-12','2022-08-21','2022-08-26']})

Output

        Date Saturday_prev Sunday_prev
0 2022-08-05    2022-07-30  2022-07-31
1 2022-08-10    2022-08-06  2022-08-07
2 2022-08-12    2022-08-06  2022-08-07
3 2022-08-21    2022-08-20  2022-08-21
4 2022-08-26    2022-08-20  2022-08-21

Himanshuman 的回答很好,但我只是想表明,对于这个问题使用 dataframe 确实没有必要:

def get_saturday(input_date):
    date = pd.to_datetime(input_date)
    days_ago = (date.day_of_week - 5)%7
    return (date - pd.to_timedelta(days_ago, unit='d')).date()

user_input = '2022-07-28'
print(get_saturday(user_input))

# Output:
2022-07-23

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM