Python панды появляются предупреждение при использовании операции с кадрами - PullRequest
0 голосов
/ 04 ноября 2019
final_merge['user_ID']=''
for i in range(len(final_merge)):
    if final_merge.loc[i,'user_x']=='nan':
        final_merge['user_ID'][i]= final_merge['user_y'][i]
    else:
        final_merge['user_ID'][i]= final_merge['user_x'][i]

Когда я использую код, в моей консоли появляются два предупреждения.

__main__:6: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
__main__:4: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

Я знаю среднее значение предупреждения, но как изменить мой код, чтобы избежать этих предупреждений?

1 Ответ

1 голос
/ 04 ноября 2019

Это относится к SettingWithCopyWarning , также в пандах у нас обычно есть несколько путей, а не для цикла для этого типа дела

np.where

final_merge['user_ID']=np.where(final_merge['user_x']=='nan',final_merge['user_y'],final_merge['user_x'])

Или fillna, если nan - это np.nan, если нет - final_merge['user_x'].replace('nan',np.nan, inplace=True)

final_merge['user_ID']=final_merge['user_x'].fillna(final_merge['user_y'])

Или mask

final_merge['user_ID']=final_merge['user_x'].mask(final_merge['user_x']=='nan',final_merge['user_y'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...