import pandas as pd
# 假设有一个包含日期和交易日信息的DataFrame
# 'date' 列包含日期信息
# 'is_trading_day' 列是一个布尔系列,表示日期是否为交易日
# 'trading_days' 列包含所有的交易日日期
# 示例数据
data = {
'date': pd.date_range(start='2023-01-01', end='2023-01-10'),
'is_trading_day': [True, True, False, True, False, True, False, True, False, True],
'trading_days': pd.date_range(start='2023-01-01', end='2023-01-05')
}
df = pd.DataFrame(data)
# 使用merge函数找到每个非交易日日期之前的最近交易日
df['nearest_trading_day'] = df.merge(df[df['is_trading_day']][['date']], how='left', on='date')
# 删除不必要的列
df = df.drop(columns=['nearest_trading_day_x'])
print(df)