Выберите столбец dataframe и замените значения индексами, если TruePython

Программы на Python
Ответить
Anonymous
 Выберите столбец dataframe и замените значения индексами, если True

Сообщение Anonymous »

Трудно найти правильный заголовок... вот что я хочу:
У меня есть фрейм данных и столбец col1 со значениями: val1, val2, val3Я хочу выбрать строки со значениями val2 или val3 для этого конкретного столбца и заменить их значением val4, но не для всех из них, а только для «среза» между idx x и y :

Код: Выделить всё

import pandas as pd
data = {'col1':["val1","val3","val3","val2","val1","val2","val3","val1"],'col2':["val3","val1","val2","val1","val2","val3","val2","val2"]}
df = pd.DataFrame(data)
df
col1  col2
0  val1  val3
1  val3  val1
2  val3  val2
3  val2  val1
4  val1  val2
5  val2  val3
6  val3  val2
7  val1  val2
Выберите строки из столбца 1 со значениями val2 или val3:

Код: Выделить всё

(df['col1']=="val2") | (df['col1']=="val3")
0    False
1     True
2     True
3     True
4    False
5     True
6     True
7    False
Теперь я хочу заменить первые 4 строки True для col1 (строки с индексом 1 2 3 5) на val4, чтобы получить:

Код: Выделить всё

   col1  col2
0  val1  val3
1  val4  val1
2  val4  val2
3  val4  val1
4  val1  val2
5  val4  val3
6  val3  val2
7  val1  val2
Я подумал что-то вроде:

Код: Выделить всё

df[((df['col1']=="val2") | (df['col1']=="val3"))==True][0:4] = "val4"
но это не работает (не удивительно...)
Думаю, мне нужно использовать что-то вроде .loc
Спасибо за любую подсказку

Подробнее здесь: https://stackoverflow.com/questions/793 ... es-if-true
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»