Как расширить фрейм данных с диапазоном дат в два столбца, используя python? - PullRequest
1 голос
/ 17 марта 2020

Как расширить диапазон времени информации в кадре данных в виде нового кадра данных.

  • У меня есть кадр данных df с датами, строками и факторами, подобными этим:
 "start"     "end"      "note"   "item"
2016-12-30  2017-01-03    Z        1
2017-09-10  2017-09-14    W        2
  • Я хочу расширить его следующим образом.
 "start"      "note"    "item"
2016-12-30     Z         1
2016-12-31     Z         1
2017-01-01     Z         1
2017-01-02     Z         1
2017-01-03     Z         1
2017-09-10     W         2
2017-09-11     W         2
2017-09-12     W         2
2017-09-13     W         2
2017-09-14     W         2

Как я могу сделать это, используя python.

1 Ответ

1 голос
/ 17 марта 2020

Использование:

#convert columns to datetimes if necessary
df[['start','end']] = df[['start','end']].apply(pd.to_datetime)
#repeat datetimes to Series
s = pd.concat([pd.Series(r.Index,pd.date_range(r.start, r.end)) 
                         for r in df.itertuples()])

#repoeat values, remove end column and reaasign start by index values
df = df.loc[s].drop(['end'], axis=1).assign(start=s.index).reset_index(drop=True)
print (df)
       start note  item
0 2016-12-30    Z     1
1 2016-12-31    Z     1
2 2017-01-01    Z     1
3 2017-01-02    Z     1
4 2017-01-03    Z     1
5 2017-09-10    W     2
6 2017-09-11    W     2
7 2017-09-12    W     2
8 2017-09-13    W     2
9 2017-09-14    W     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...