Создайте фрейм данных Python, сгладив два столбца - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть такой фрейм данных:

zip      season   season_start_date   season_end_date
zip1     winter   2015-11-25          2016-03-09

Мне нужен вид, чтобы сгладить дату между начальной и конечной датами.Я ожидаю, что результат будет таким:

zip       season   date   
zip1      winter   2015-11-25
zip1      winter   2015-11-26
.
.
zip1      winter   2016-03-09

Как я могу понять более элегантным способом?

data = {"zip":["zip1","zip1"],
    "season":["s6","s6"],
    "season_start_date": ["2011-01-01","2011-01-01"], 
    "season_end_date" : ["2012-01-05","2012-01-05"]
   }
df = pd.DataFrame(data=data)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вам потребуется сгенерировать DataFrame из каждой строки, а затем объединить их вместе:

res = pd.concat([
    pd.DataFrame({
        'zip': r.zip, 'season': r.season, 'date': pd.DatetimeIndex(
            start=r.season_start_date, end=r.season_end_date, freq='D'
        )
    }) for _, r in data.iterrows()
], sort=False)
0 голосов
/ 12 декабря 2018
from datetime import datetime, timedelta

Row_to_split = df.loc[1]
Season = Row_to_split['season']
Start_Date = datetime.strptime(Row_to_split['season_start_date']', '%Y-%m-%d')
End_Date = datetime.strptime(Row_to_split['season_end_date']', '%Y-%m-%d')
# initialize new_df 
for i in range((End_Date - Start_Date).days+1):
    new_df.loc[i] = [season, (Start_Date+timedelta(i)).strftime('%Y-%m-%d')]

Это делает то, что вы хотели?Я не был уверен, был ли индексный столбец индексом, но должно быть понятно, как его вставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...