【发布时间】:2021-10-27 11:22:45
【问题描述】:
我一直在尝试解决here中提到的问题
我一直在尝试使用日期列表来过滤数据框,一位非常亲切的人正在帮助我,但现在使用当前代码,我收到了这些错误。
# Assign a sequential number to each trading day
df_melt_test_percent = df_melt_test_percent.sort_index().assign(DayNumber=lambda x: range(len(x)))
# Find the indices of the FOMC_dates
tmp = pd.merge(
df_FOMC_dates, df_melt_test_percent[['DayNumber']],
left_on='FOMC_date', right_on='DayNumber'
)
# For each row, get the FOMC_dates ± 3 days
tmp['delta'] = tmp.apply(lambda _: range(-3, 4), axis=1)
tmp = tmp.explode('delta')
tmp['DayNumber'] += tmp['delta']
# Assemble the result
result = pd.merge(tmp, df_melt_test_percent, on='DayNumber')
数据帧的屏幕截图:
如果有人对如何解决此问题有任何建议,将不胜感激。
【问题讨论】:
-
要合并的列在两个数据框中的类型不同,可能一个是字符串,另一个是 int。合并前应转换为相同类型
-
图片上没有''DayNumber''栏,所以不清楚你有什么问题
-
尝试将其更改为
tmp = pd.merge(..., right_index=True)。你提到你在那之后得到空白result。你能发布一些数据以便我处理吗? -
@CodeDifferent 通过设置
right_index = True,错误消失了,但数据框显示不正确。编辑 OP 以显示。
标签: python-3.x pandas dataframe