У меня есть pandas DataFrame, который содержит пару временных рядов, и его индекс представлен каждой датой этих данных временного ряда. У меня также есть список указанных c дат (с неравномерным интервалом), и моя цель - прикрепить фиктивную переменную к DataFrame так, чтобы она равнялась единице, если индекс даты в кадре данных содержится в списке указанных * 1027. * даты. Для этого я добавил столбец нулей в фрейм данных и попытался изменить его на единицу в соответствии с моей целью: l oop:
for index, row in df.iterrows():
if index==listdate[listdate[listdate.isin({'dates': [index]})]['dates'].notna()]['dates']:
df.loc[index,h]=1
else:
continue
, где index
обозначает дату в фрейм данных df
. Более того, I listdate
- это еще один фрейм данных, который содержит только списки указанных c дат, а 'dates'
- это столбец, содержащий список дат, которые я намеревался использовать. Я получаю сообщение об ошибке:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Может кто-нибудь помочь? Есть ли у кого-нибудь более эффективный способ сделать это?
Вот пример моего фрейма данных df:
feat1 feat2 EEG UNPPLOYiitte CPC PPP FFMM
Date
2005-09-19 14.75 14.74 0 0 0 0 0
2005-09-20 14.67 14.66 0 0 0 0 0
2005-09-21 15.67 15.67 0 0 0 0 0
2005-09-22 15.6 15.59 0 0 0 0 0
2005-09-23 14.85 14.81 0 0 0 0 0
мой список дат представлен:
UNPPLOYiitte CPC PPP FFMM
0 1958-01-14 1958-01-21 1971-02-17 1978-01-18
1 1958-02-11 1958-02-25 1971-03-05 1978-03-01
2 1958-03-11 1958-03-21 1971-04-01 1978-03-22
3 1958-04-08 1958-04-23 1971-05-06 1978-04-19
4 1958-04-29 1958-05-22 1971-06-04 1978-05-17
.. ... ... ... ...
712 2017-08-04 NaT NaT NaT
713 2017-09-01 NaT NaT NaT
714 2017-10-06 NaT NaT NaT
715 2017-11-03 NaT NaT NaT
716 2017-12-08 NaT NaT NaT
Я ожидаю получить что-то вроде этого:
feat1 feat2 EEG UNPPLOYiitte CPC PPP FFMM
Date
2007-11-05 20.8 24.73 0 0 0 0 0
2007-11-06 20.8 23.15 0 0 0 0 0
2007-11-07 23.11 24.66 0 0 0 0 0
2007-11-08 24.21 25.36 1 0 0 0 0
2007-11-09 26.26 28.59 0 0 0 0 0
2007-11-12 25.8 27.88 0 0 0 0 0
2007-11-13 24.39 26.4 0 0 0 0 0
2007-11-14 23.91 29.39 0 0 0 0 0
2007-11-15 24.12 29.39 0 0 0 0 0
2007-11-16 23.95 29.39 0 0 0 0 0
2007-11-19 25.89 29.39 0 0 0 0 0
2007-11-20 24.23 24.18 0 0 0 0 0
2007-11-21 26.31 26.32 0 0 0 0 0
2007-11-22 25.28 25.33 0 0 0 0 0
2007-11-23 24.21 24.24 0 0 0 0 0
2007-11-26 25.36 25.6 0 0 0 0 0
2007-11-27 24.89 25.04 0 0 0 0 0
2007-11-28 22.95 23.1 0 0 0 0 0
2007-11-29 22.19 22.15 0 0 0 0 0
2007-11-30 20.43 20.17 0 0 0 0 0
2007-12-03 20.22 20.24 0 0 0 0 0
2007-12-04 21.19 21.95 0 0 0 0 0
2007-12-05 19.13 19.47 0 0 0 0 0
2007-12-06 18.95 19.34 1 0 0 0 0
2007-12-07 17.78 17.85 0 0 0 0 0
Как видите, мне удалось сделать это для колонки ЭЭГ, но не для последних трех. Столбец ЭЭГ взят из другого кадра данных, относящегося к классу object
, в то время как список дат содержит метки даты:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 717 entries, 0 to 716
Data columns (total 4 columns):
UNPPLOYiitte 717 non-null datetime64[ns]
CPC 157 non-null datetime64[ns]
PPP 563 non-null datetime64[ns]
FFMM 328 non-null datetime64[ns]
dtypes: datetime64[ns](4)