Рассчитайте среднее значение для столбца C для всех дат, меньших даты в строке R, с помощью Pandas.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рассчитайте среднее значение для столбца C для всех дат, меньших даты в строке R, с помощью Pandas.

Сообщение Anonymous »

У меня есть кадр данных pandas с > 101 тыс. строк, из которого я пытаюсь вычислить среднее значение для столбца выигранного на основе даты. Логика заключается в том, что для каждой строки найдите среднее значение выигранного для всех строк, где row['created_on'] < текущая строка['created_on']. Обратите внимание: я не пытаюсь получить совокупное среднее значение для столбца «выиграно», поскольку этот вопрос был идентифицирован как дубликат. Предлагаемый дубликат предоставляет средства расчета совокупного значения по строке, но я хочу попытаться вычислить совокупное значение по дате, т. е. все значения для Rolling_won_prop должны быть одинаковыми для заданная дата, но не должна суммироваться по строкам.
Я могу вычислить простое значение с помощью
def get_win_prop(df, d) -> float:
mask = (df['created_on'] < d)
prop = df[mask].won.mean()
return(prop)

get_win_prop(d, '2022-10-25')

Я не получаю ошибок, когда пытаюсь использовать эту функцию с pd.assign(), но все значения в конечном итоге оказываются NaN:
d.assign(rolling_won_prop = lambda x: get_win_prop(x, x.created_on))

Изображение

Чего мне не хватает? Я бы предположил, что эффект get_win_prop() — это то, что мне нужно. Есть ли более эффективный способ сделать это в пандах? Обратите внимание: ниже я предоставил образец данных, но перед вычислением значения get_win_prop() мне нужно будет сгруппировать их по столбцу идентификатора клиента.
Пример данных
import pandas as pd
from pandas import Timestamp

d = pd.DataFrame({'created_on': [Timestamp('2022-09-22 00:00:00'), Timestamp('2022-10-14 00:00:00'),Timestamp('2022-10-19 00:00:00'),Timestamp('2022-10-25 00:00:00'),Timestamp('2022-11-02 00:00:00'),
Timestamp('2022-11-04 00:00:00'),Timestamp('2022-11-16 00:00:00'),Timestamp('2022-11-28 00:00:00'),Timestamp('2022-11-28 00:00:00'),Timestamp('2022-12-07 00:00:00'),
Timestamp('2022-12-21 00:00:00'),Timestamp('2022-12-21 00:00:00'),Timestamp('2022-12-21 00:00:00'),Timestamp('2022-12-21 00:00:00')],
'n_lines': [7, 3, 7, 6, 6, 4, 5, 3, 10, 3, 6, 6, 9, 6],
'n_pieces': [606, 202, 706, 765, 255, 803, 1004, 2702, 1909, 546, 555, 555, 558,555],
'quote_total': [1780.4299999999998, 3575.4600000000005, 11762.079999999994, 6725.160000000002, 995.9300000000001, 1644.2100000000003, 2620.2299999999996,
8082.090000000001, 5302.320000000001, 1959.7599999999998, 8734.67, 9792.3, 0.0, 9720.71],
'won': [1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0]})


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-row-r-wi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»