Проблема, когда я группирую и заполняю na минимальным значением даты сгруппированным элементом - PullRequest
0 голосов
/ 13 июля 2020

Это мой набор данных, и я пытаюсь заполнить столбцы даты с NaN минимальным значением.

I am trying to fill the NaN in the date columns with the min from that date column for the ag_id (grouped-by element). When I do the below I get unexpected output.

df_test_revenue_1["1st_rev_month"] = df_test_revenue_1.groupby("ag_id").transform(lambda x: x.fillna(x.min()))

Unexpected output from executing the above :

enter image description here

I was expecting all the values of the column 1st_rev_month to be 2017-10-01. Instead it looks like it it picking the values for 1st_rev_month from column revenue_month

My end goal is to get this result (apple the same logic to rest of the date columns (except revenue_month column введите описание изображения здесь

1 Ответ

0 голосов
/ 13 июля 2020

Ваш код:

df_test_revenue_1.groupby("ag_id").transform(lambda x: x.fillna(x.min()))

никогда не ссылайтесь на столбец «1st_rev_month». ваша ссылка на него в левой части означает «поместить результат в столбец 1st_rev_month». Но каков результат? это минимум для всего фрейма данных, а не только за «1st_rev_month».

Вам нужно взять минимум только за столбец «1st_rev_month».

Исправление:

df_test_revenue_1["1st_rev_month"]=df_test_revenue_1.groupby("ag_id")['1st_rev_month'].transform(lambda x: x.fillna(x.min()))

добавление ['1st_rev_month'] после groupby, чтобы взять только соответствующий столбец

...