[英]Modify 2 columns in dataframe based on condition
我在Stack Overflow上看到了一些關於如何根據條件修改數據框中的單個列的示例,但我無法弄清楚如何根據單個條件修改多個列。
如果我有一個基於以下代碼生成的數據框 -
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()
函數來做到這一點?
預先感謝您的幫助!
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.