Панды fillna () на месте не работает с .loc - PullRequest
0 голосов
/ 06 мая 2019

* РЕДАКТИРОВАТЬ Также не работает с .loc

Я не решался создать еще один пост о том, что fillna не работает, поскольку уже доступно много. Но я застрял на хороший день, работая над этим.

Я использую python с пандами и numpy, и у меня есть фрейм данных, который я использую для заполнения списков. Хотя, скорее всего, есть некоторые возможности для повышения производительности. У меня проблемы с тем, что метод fillna не работает. Я мог бы взять эту логику из понимания списка и поместить ее во встроенный цикл. На время, я бы предпочел нет.

Почему значения NaN не обновляются?

Спасибо заранее.

df_race_details['MSTR_ID'] = np.nan
lst_b_cust = []
df_grpd_cust = df_race_details.groupby('CUST_LIST_ID')

itr_mstr_id = iter(range(1, len(df_grpd_cust.groups)+1,1))

[
    df_race_details.loc[df_race_details['CUST_LIST_ID'] == nm_b, 'MSTR_ID'].fillna(value=itr_mstr_id.__next__(), inplace=True)
    for nm_a, gp_a in df_grpd_cust
    if gp_a['MSTR_ID'].isnull().values.any()
    for nm_b, gp_b in df_grpd_cust
    if gp_b['MSTR_ID'].isnull().values.any()
    for i in lst_gp_b
    if i in gp_a['CUSTOMER_ID'].tolist()
]


#Specifically this line is not updating the dataframe
    df_race_details.loc[df_race_details['CUST_LIST_ID'] == nm_b, 'MSTR_ID'].fillna(value=itr_mstr_id.__next__(), inplace=True)

1 Ответ

0 голосов
/ 07 мая 2019

Вы должны попробовать что-то подобное, потому что иногда этот подход работал для меня.

df_race_details.loc[df_race_details['CUST_LIST_ID'] = df_race_details.loc[df_race_details['CUST_LIST_ID'] == nm_b, 'MSTR_ID'].fillna(value=itr_mstr_id.__next__())

Убедитесь, что вы удалили атрибут inplace.

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