Изменить 2 столбца в кадре данных на основе условия - PullRequest
0 голосов
/ 02 ноября 2018

Я видел множество примеров переполнения стека о том, как изменить один столбец в кадре данных на основе условия, но я не могу понять, как изменить несколько столбцов на основе одного условия.

Если у меня есть кадр данных, сгенерированный на основе приведенного ниже кода -

import random
import pandas as pd

random_events = ('SHOT', 'MISSED_SHOT', 'GOAL')
events = list()

for i in range(6):
    event = dict()
    event['event_type'] = random.choice(random_events)
    event['coords_x'] = round(random.uniform(-100, 100), 2)
    event['coords_y'] = round(random.uniform(-42.5, 42.5), 2)
    events.append(event)

df = pd.DataFrame(events)
print(df)
   coords_x  coords_y   event_type
0      4.07    -21.75         GOAL
1     -2.46    -20.99         SHOT
2     99.45    -15.09  MISSED_SHOT
3     78.17    -10.17         GOAL
4    -87.24     34.40         GOAL
5    -96.10     30.41         GOAL

Что я хочу сделать, это следующее (в псевдокоде) в каждой строке DataFrame -

if df['coords_x'] < 0:
    df['coords_x'] * -1
    df['coords_y'] * -1

Есть ли способ сделать это с помощью функции df.apply(), которую мне не хватает?

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 02 ноября 2018

IIUC, вы можете сделать это с loc, избегая необходимости apply:

>>> df
   coords_x  coords_y   event_type
0      4.07    -21.75         GOAL
1     -2.46    -20.99         SHOT
2     99.45    -15.09  MISSED_SHOT
3     78.17    -10.17         GOAL
4    -87.24     34.40         GOAL
5    -96.10     30.41         GOAL

>>> df.loc[df.coords_x < 0, ['coords_x', 'coords_y']] *= -1
>>> df
   coords_x  coords_y   event_type
0      4.07    -21.75         GOAL
1      2.46     20.99         SHOT
2     99.45    -15.09  MISSED_SHOT
3     78.17    -10.17         GOAL
4     87.24    -34.40         GOAL
5     96.10    -30.41         GOAL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...