Скажите, у меня есть следующий DataFrame:
d = pd.DataFrame({'A': [20, 0.5, 40, 45, 40, 35, 20, 25],
'B' : [5, 10, 6, 8, 9, 7, 5, 8]},
index = pd.date_range(start = "2010Q1", periods = 8, freq = 'QS'))
A B
2010-01-01 20.0 5
2010-04-01 0.5 10
2010-07-01 40.0 6
2010-10-01 45.0 8
2011-01-01 40.0 9
2011-04-01 35.0 7
2011-07-01 20.0 5
2011-10-01 25.0 8
Также предположим, что у меня есть следующие серии дат:
D = d.idxmax()
A 2010-10-01
B 2010-04-01
dtype: datetime64[ns]
То, что я пытаюсь сделать, это по сути "сбросить" значения в DataFrame, d, которые встречаются до дат в ряду D для каждого столбца
То есть то, что я ищу:
A B
2010-01-01 NaN NaN
2010-04-01 NaN 10.0
2010-07-01 NaN 6.0
2010-10-01 45.0 8.0
2011-01-01 40.0 9.0
2011-04-01 35.0 7.0
2011-07-01 20.0 5.0
2011-10-01 25.0 8.0
Обратите внимание, что все значения в столбце A до 2010-10-01 удалены, а все значения в столбце B удалены до 2010-04-01.
Для этого достаточно просто перебрать столбцы, но DataFrame, с которым я работаю, очень большой, и этот процесс занимает много времени.
Есть ли более простой способ сделать это оптом, а не столбец за столбцом?
Спасибо