У меня есть df, который выглядит так:
col1 col2 NaN text text text NaN text NaN text
Я хочу очистить значение в col2, если NaN, если присутствует в col1.
col2
NaN
col1
Новый df должен выглядеть так:
col1 col2 NaN text text NaN NaN
Использование dropna + reindex
dropna
reindex
df.dropna('col1').reindex(df.index) # fixing by cold :-) col1 col2 0 NaN NaN 1 text text 2 NaN NaN 3 NaN NaN
1-й шаг: Создать df путем копирования образца OP. (Сначала скопируйте образец OP, а затем выполните следующую команду).
df
df=pd.read_clipboard();
2-й шаг: Не могли бы вы попробовать здесь.
df.loc[df['col1'].isnull(), 'col2'] = '' df
Вывод будет следующим.
col1 col2 0 NaN 1 text text 2 NaN 3 NaN
Вам нужна операция mask ing:
mask
df['col2'] = df['col2'].mask(df.col1.isna(), '') # df['col2'] = np.where(df.col1.isna(), '', df['col2']) df col1 col2 0 NaN 1 text text 2 NaN 3 NaN
Если вы хотите, чтобы во втором столбце вместо пробелов присутствовали NaN, пропустите второй параметр в mask.