根据条件修改dataframe中的2列

2024-05-16 19:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到了一些关于堆栈溢出的例子,这些例子说明了如何基于一个条件修改数据帧中的一列,但是我不知道如何基于一个条件修改多个列

如果我有一个基于以下代码生成的数据帧-

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

我想在数据帧的每一行上完成以下内容(伪代码)—

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

有没有办法通过我缺少的df.apply()函数来实现这一点

提前感谢您的帮助


Tags: 数据importeventdftyperandomcoordsevents
1条回答
网友
1楼 · 发布于 2024-05-16 19:27:31

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

相关问题 更多 >