熊猫fillna()就位不适用于.loc

时间:2019-05-06 20:28:41

标签: python pandas numpy fillna

* EDIT也不适用于.loc

我一直在犹豫不决地撰写有关fillna的另一篇文章,因为已有很多可用的信息。但是我为此一直困顿了美好的一天。

我正在将python和pandas和numpy一起使用,并且有一个数据框,我正在使用fillna和一个列表理解功能。虽然最有可能获得更好的性能。我在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 :(得分:0)

您应该尝试这样的操作,因为有时这种方法对我有用。

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__())

请确保已删除就地属性。