В моей таблице есть столбец даты. Мне нужна функция, которая помечает строки как True в одной группе, если в течение m мPython

Программы на Python
Ответить
Anonymous
 В моей таблице есть столбец даты. Мне нужна функция, которая помечает строки как True в одной группе, если в течение m м

Сообщение Anonymous »

Вот как выглядит моя функция.

Код: Выделить всё

def flag_date_within_m_months(group, col_label, col_date):
group[col_date] = pd.to_datetime(group[col_date])
group = group.sort_values(by=col_date)  # Sort by date
group[col_label] = False

# Create a rolling window to count claims
for i in range(len(group)):
current_date = group[col_date].iloc[i]
window_start = current_date - pd.DateOffset(months=m)

# Count the number of claims within the window
count_within_window = group[(group[col_date] = window_start)].shape[0]

if count_within_window > n:
# Flag all claims in the window
group.loc[(group[col_date] = window_start), col_label] = True
print(f"Flagging claims between {window_start} and {current_date}")  # Debug output

return group
Однако, когда я использую его следующим образом, я не получаю ожидаемых результатов. Цель следующего блока кода — пометить строки, в которых клиент («Client_number's_PO») подает более [n] претензий на одно и то же страховое возмещение/компонент («Benefit/comComponent_code») в течение [m] месяцев (понесенные /дата события) При проверке вручную есть много строк, которые должны быть помечены как True, но когда я запускаю это, все строки имеют значение False.:

Код: Выделить всё

# Control parameters
n = 5
m = 6

# Create an index so that every row with the same 'Client_number's_PO' and 'Benefit/component_code' has the same index number.
claim_data["1. Index"] = claim_data_m.groupby(["Client_number's_PO", "Benefit/component_code"]).ngroup()

# Flag the rows based on the condition
claim_data["1"] = False
claim_data.groupby("1. Index").apply(flag_date_within_m_months, col_label="1", col_date="Incur Date")
Пожалуйста, помогите мне это исправить.
Я попробовал то, что описал выше, и ожидаю, что за m месяцев появятся строки с более чем n вхождениями с те же «Client_number's_PO» и «Benefit/comComponent_code» будут помечены как True в столбце «1».

Подробнее здесь: https://stackoverflow.com/questions/791 ... within-the
Ответить

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

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

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

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

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