#pandas #replace
Вопрос:
сказать:
m = 170000 , v = -(м/100)
{'01-09-2021': 631, '02-09-2021': -442, '08-09-2021': 6, '09-09-2021': 1528, '13-09-2021': 2042, '14-09-2021': 1098, '15-09-2021': -2092, '16-09-2021': -6718, '20-09-2021': -595, '22-09-2021': 268, '23-09-2021': -2464, '28-09-2021': 611, '29-09-2021': -1700, '30-09-2021': 4392}
Я хочу заменить значения в столбце «Окончательный» на v, если значение меньше v, в противном случае сохраните исходное значение. Попробовал numpy.where , df.loc и т. Д., Но не сработало.
Комментарии:
1. Добавлен код для данных.
Ответ №1:
Вы можете использовать clip
:
df['Final'] = df['Final'].clip(-1700)
print(df)
# Output:
Date Final
0 01-09-2021 631
1 02-09-2021 -442
2 08-09-2021 6
3 09-09-2021 1528
4 13-09-2021 2042
5 14-09-2021 1098
6 15-09-2021 -1700
7 16-09-2021 -1700
8 20-09-2021 -595
9 22-09-2021 268
10 23-09-2021 -1700
11 28-09-2021 611
12 29-09-2021 -1700
13 30-09-2021 4392
Или классический np.where
:
df['Final'] = np.where(df['Final'] < -1700, -1700, df['Final'])
Установка:
df = pd.DataFrame({'Date': d.keys(), 'Final': d.values()})
Комментарии:
1. Да, спасибо тебе.
Ответ №2:
Вы можете попробовать:
df.loc[df['Final']<v, 'Final'] = v
Выход:
Date Final
0 01-09-2021 631
1 02-09-2021 -442
2 08-09-2021 6
3 09-09-2021 1528
4 13-09-2021 2042
5 14-09-2021 1098
6 15-09-2021 -1700
7 16-09-2021 -1700
8 20-09-2021 -595
9 22-09-2021 268
10 23-09-2021 -1700
11 28-09-2021 611
12 29-09-2021 -1700
13 30-09-2021 4392