如何根据某些列不具有的内容创建新列?

2024-10-02 00:44:30 发布

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

我举了以下例子:

away_team_id home_team_id team_id
1            4            1
3            7            3
6            25           25 
12           64           12

我想创建一个名为“对手”的新对象,它是“团队id”,而不是“团队id”,下面是它的外观:

away_team_id home_team_id team_id opponent
1            4            1       4 
3            7            7       3
6            25           25      6
12           64           12      64

这是我试过的

df['opponent'] = [df['away_team_id'] if df['team_id'] == df['home_team_id'] else df['home_team_id'] for team_id in df['team_id]]

我哪里做错了?谢谢


Tags: 对象iniddfhomeforif团队
1条回答
网友
1楼 · 发布于 2024-10-02 00:44:30

您可以使用单个numpy.where()解决此问题:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'away_team_id': [1, 3, 6],
    'home_team_id': [4, 7, 25],
    'team_id': [1, 4, 25],
})

df['opponent'] = np.where(
    df['away_team_id'] == df['team_id'],  # condition
    df['home_team_id'],                   # when condition is True
    df['away_team_id']                    # when condition is False
)
df
#    away_team_id  home_team_id  team_id  opponent
# 0  1             4             1        4
# 1  3             7             4        3
# 2  6             25            25       6

相关问题 更多 >

    热门问题