Вставка пропущенных строк с вмененными значениями в Python - PullRequest
3 голосов
/ 22 апреля 2019

Задача

Как можно вставить строки для пропущенных ЛЕТ , с вмененным годовым ПРОДАЖ .

Прогресс

Следующий код вычисляет разницу в продажах.Однако в течение одного года используется явный указатель iloc .

import pandas as pd

data = {"YEAR": [1990, 1995, 2000, 1990, 1995, 2000], 
        "COUNTRY": ["USA", "USA", "USA", "USA", "USA", "USA"],
        "STATE": ["AZ", "AZ", "AZ", "AZ", "AZ", "AZ"],
        "BRANCH":["Bed", "Bed", "Bed", "Kitchen", "Kitchen", "Kitchen"], 
        "SALES": [50, 80, 100, 10, 20, 50]}

df = pd.DataFrame(data)

value_first = df.iloc[0][4]
value_second = df.iloc[1][4]

delta_step = (value_second - value_first) / 5 # because 5 years between

for x in range(0, 6): 
    print((x * delta_step) + value_first)

Исходные данные

Original dataset

Цель

Цель состоит в том, чтобы вставить выделенные желтым цветом строки, в которых продажи исчисляются с использованием прямых шагов между показателями продаж за 1990 и 2000 годы.Destination dataset

1 Ответ

0 голосов
/ 23 апреля 2019

Сначала оштрафуйте пропущенный год каждой группы и превратите его в merge df

idx=df.groupby(['COUNTRY','STATE','BRANCH'])['YEAR'].\
       apply(lambda x : pd.Series(range(min(x),max(x)+1))).\
         reset_index(level=[0,1,2])

Затем выполните слияние

yourdf=idx.merge(df,how='left')

Затем с помощью interpolate вменяйте пропущенныйзначение

yourdf['SALES']=yourdf.groupby(['COUNTRY','STATE','BRANCH'])['SALES'].apply(pd.Series.interpolate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...