Предполагая, что у меня есть следующая таблица:
+----+---+---+
| A | B | C |
+----+---+---+
| 1 | 1 | 3 |
| 2 | 2 | 7 |
| 6 | 3 | 2 |
| -1 | 9 | 0 |
| 2 | 1 | 3 |
| -8 | 8 | 2 |
| 2 | 1 | 9 |
+----+---+---+
если значение столбца A отрицательное, обновите значение столбца B значением столбца C. если нет, ничего не делайте
Это желаемый результат:
+----+---+---+
| A | B | C |
+----+---+---+
| 1 | 1 | 3 |
| 2 | 2 | 7 |
| 6 | 3 | 2 |
| -1 | 0 | 0 |
| 2 | 1 | 3 |
| -8 | 2 | 2 |
| 2 | 1 | 9 |
+----+---+---+
Я пробовал следующий код, но он не работает
#not working
result.loc(result["A"] < 0,result['B'] = result['C'].iloc[0])
Использование where
правильно, но, возможно, это то, что вы пытались сделать: result.loc[result['A']<0,'B'] = result.loc[result['A']<0,'C']
. Но, как вы можете ясно видеть, .where
чище.
результат.B[результат.A < 0] = результат.C
Попробуй это:
df.loc[df['A'] < 0, 'B'] = df['C']
Хотя эта команда может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его долгосрочную ценность. Как ответить
df['B'].where(df.A.ge(0), df.C)