Панды, Замените значения столбца переменной (отрицательной), если она меньше этой переменной, в противном случае сохраните значения как есть

#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