|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import pandas as pd
data = [["2022-12-21",""],["2022-12-20",""],["2022-12-19",""],
["2022-12-18",""],["2022-12-17",""],
["2022-12-16",""],["2022-12-12",""]]
columns = ["准备提交日期","股票交易日"]
df = pd.DataFrame(data, columns=columns)
df
#想把准备提交日期转化为股票交易日,即准备日当天如果是交易日,那股票交易日就等于准备日
如果准备日不是交易日,就计算准备日后几天是交易日,如准备日是2023/4/15日,那交易日就是2023/4/17
求大师帮忙,谢谢
您好!根据您的需求,我给出了一个解决方案。在这个方案中,我们首先需要找到每个日期是否为交易日,然后将“准备提交日期”转换为“股票交易日”。以下是一个示例代码:
- import pandas as pd
- from datetime import datetime, timedelta
- data = [["2022-12-21",""],["2022-12-20",""],["2022-12-19",""],
- ["2022-12-18",""],["2022-12-17",""],
- ["2022-12-16",""],["2022-12-12",""]]
- columns = ["准备提交日期","股票交易日"]
- df = pd.DataFrame(data, columns=columns)
- # 判断是否为交易日
- def is_trading_day(date):
- # 周六、周日为非交易日
- if date.weekday() >= 5:
- return False
- # TODO: 您可以在此处添加其他非交易日的判断逻辑,例如法定节假日
- return True
- # 获取下一个交易日
- def get_next_trading_day(date):
- while not is_trading_day(date):
- date += timedelta(days=1)
- return date
- # 转换准备提交日期为股票交易日
- for index, row in df.iterrows():
- prepared_date = datetime.strptime(row['准备提交日期'], '%Y-%m-%d').date()
- trading_day = get_next_trading_day(prepared_date)
- df.at[index, '股票交易日'] = trading_day.strftime('%Y-%m-%d')
- print(df)
复制代码
此代码中,我定义了两个辅助函数,分别用于判断给定日期是否为交易日(is_trading_day),以及查找给定日期后的第一个交易日(get_next_trading_day)。然后在主循环中,我使用这两个函数将“准备提交日期”转换为“股票交易日”。
请注意,这个示例中我只考虑了周六和周日为非交易日,如果需要考虑其他非交易日,例如法定节假日,您需要在 is_trading_day 函数中添加相应的逻辑。
希望对您有所帮助!如果您有任何疑问,请随时提问。
|
|