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

Я хотел бы создать новую переменную, называемую snapavg, используя цикл.

Here is a screenshot of the dataframe

Для каждого Имени я хотел бы сделатьцикл, который:

  • если неделя = 1, я хотел бы вернуть среднее значение как просто TouchSnapPercentage

  • если неделя = 2, я хотел бывернуть среднее значение в виде TouchSnapPercentage за неделю 1 + неделя 2 для каждого, разделенное на 2

  • , если неделя = 3, разделенное на 3 и т. д.

Все, что я до сих пор пробовал, не работает.

1 Ответ

0 голосов
/ 11 октября 2018

Тестовые данные

df = pd.DataFrame(
{
    'date': [1, 2, 3, 1, 2, 3],
    'user': ['a', 'a', 'a', 'b', 'b', 'b'],
    'value': [1, 2, 3, 2, 4, 6]
}

Получить результат:

df.apply(lambda x: np.sum([df[(df.user == x.user) & (df.date == each)].iloc[0].value for each in range(1, x.date + 1)]) / x.date
     , axis=1)

Если у вас отсутствуют данные (данные за одну неделю, но нет данных за предыдущую):

df.apply(
    lambda x: np.sum(
        [df[(df.user == x.user) & (df.date == each)].iloc[0].value
         if df[(df.user == x.user) & (df.date == each)].shape[0] is not 0 else 0
         for each in range(1, x.date + 1)]) / x.date, axis=1)

Возможно, вы захотите переписать это как функцию, читаемость этого кода плохая.

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