Панды изменить форму DataFrame - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть следующий фрейм данных:

data = {"start_date" : ["2018-04-30", "2018-05-01"]
       ,"end_date"   : ["2018-05-01", "2018-05-02"]
       ,"budget"      : [10, 12]}

df = pd.DataFrame(data)

df["start_date"] = pd.to_datetime(df["start_date"])
df["end_date"] = pd.to_datetime(df["end_date"])

df

        budget  end_date    start_date 
  0       10    2018-05-01  2018-04-30
  1       12    2018-05-02  2018-05-01

Я бы хотел изменить форму моего фрейма данных (разделенных строк) так:

      daily_average     days    end_date    start_date
    0      5         2018-04-30 2018-05-01  2018-04-30
    1      5         2018-05-01 2018-05-01  2018-04-30
    2      6         2018-05-01 2018-05-02  2018-05-01
    3      6         2018-05-02 2018-05-02  2018-05-01

1 Ответ

0 голосов
/ 30 апреля 2018

Решение основано на этой теме:

python - повторяющиеся строки x количество раз на основе значения в столбце

df['Number of days'] = (df['end_date']-df['start_date']).map(lambda x: x.days)
df = df.loc[df.index.repeat(df['Number of days']+1)]
df['days'] =(df.groupby(level=0)['start_date']
                     .transform(lambda x: pd.date_range(start=x.iat[0], periods=len(x))))
df['daily_average'] = df['budget']/(df['Number of days']+1)
df = df.reset_index(drop=True)
df = df[['daily_average', 'days', 'end_date', 'start_date']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...