【问题标题】:How to create a new Column in a Pandas DataFrame based on certain values in another column using Python? [duplicate]如何使用 Python 根据另一列中的某些值在 Pandas DataFrame 中创建新列? [复制]
【发布时间】:2022-01-20 11:28:18
【问题描述】:

我仍在学习 Python 和 Pandas,需要一些帮助。我想在现有 DataFrame 中创建一个新列。

当前数据帧:

bballData = {'Name':['Joel', 'Cole', 'Duncan'],
        'Team':['PHI', 'ORL', 'MIA'],
        'Home':['PHI', 'PHI', 'MIA'],
        'Away':['ORL', 'ORL', 'POR']}

df = pd.DataFrame(bballData)

新列将是“对手”。

期望的输出:

bballDataFinal = {'Name':['Joel', 'Cole', 'Duncan'],
        'Team':['PHI', 'ORL', 'MIA'],
        'Home':['PHI', 'PHI', 'MIA'],
        'Away':['ORL', 'ORL', 'POR'],
        'Opponent':['ORL','PHI','POR']}

dfFinal = pd.DataFrame(bballDataFinal)

为了创建这个新栏目“对手”,我希望可以做到以下几点:

  1. 如果 'Team' 值等于 'Home' 值,那么 OPPONENT 应该是 'Away' 值。

在这种情况下,对于球员 1,乔尔,他的球队是 PHI,主场是 PHI,所以对手应该是“客场”值,ORL。

  1. 如果 'Team' 值等于 'Away' 值,则 OPPONENT 应该是 'Home' 值。

在这种情况下,对于球员 2,Cole,他的球队是 ORL,而 Away 是 ORL,所以对手应该是 'Home' 值,PHI。

【问题讨论】:

    标签: python pandas dataframe if-statement


    【解决方案1】:

    您可以在此处使用np.select。它评估多个条件并根据哪个条件评估为 True 来选择结果。例如,如果df['Team']==df['Home'] 为True,则从df['Away'] 等中进行选择。

    import numpy as np
    df['Opponent'] = np.select([df['Team']==df['Home'], df['Team']==df['Away']], [df['Away'], df['Home']], 'No opponent here')
    

    如果保证对手必须是列出的两支球队之一,那么你可以使用np.where。基本上,这是np.select 的二进制版本。

    df['Opponent'] = np.where(df['Team']==df['Home'], df['Away'], df['Home'])
    

    输出:

         Name Team Home Away Opponent
    0    Joel  PHI  PHI  ORL      ORL
    1    Cole  ORL  PHI  ORL      PHI
    2  Duncan  MIA  MIA  POR      POR
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2020-04-16
      • 2022-10-15
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2021-03-31
      相关资源
      最近更新 更多