【问题标题】:Unique values of 2 column NOT in another column2列的唯一值不在另一列中
【发布时间】:2019-05-17 02:19:11
【问题描述】:

我有 3 列,例如 team1、team2 和 Winner

(p.s. 我有大数据集我只是在这里举个小例子)

我想找出谁永远不会赢。

所以我的想法是找到团队 1 和团队 2 的独特价值 然后从唯一值中找出哪个值不会出现在获胜者列表中。

team1                        team 2                       toss_winner

Kolkata knight riders       delhi daredevil               delhi daredevils

kings XI punjab            pune warriors                 kings XI punjab

delhi daredevil            mumbai indians                delhi daredevil

pune warriors              chennai superkings            chennai superkings

rajasthan royals           gujarat lions                 gujarat lions

Sunrisers Hyderabad         decan chargers               Sunrisers Hyderabad

Royalchallenger Banglore    Kolkata knight riders        Kolkata knight riders

chennai superkings          rajasthan royals             rajasthan royals

a=np.unique(df[['team1', 'team2']])

b=(df["toss_winner"]).unique()

【问题讨论】:

  • 您也可以添加预期的数据框吗?谢谢
  • 您不能简单地将team1 和team2 的唯一列表添加到第三个列表中吗?然后取其中的唯一值,然后过滤 df["toss_winner"] 以获取第三个唯一列表中未找到的值。让我知道这是否有意义。

标签: python pandas pandas-groupby


【解决方案1】:
uniqueTeams = np.unique(np.concatenate([df['team1'].values, df['team2'].values]))

df.loc[~df['toss_winner'].isin(uniqueTeams), 'toss_winner']

首先,连接两列的所有值,然后查看唯一值。接下来查看我们 uniqueTeams ~df['toss_winner'].isin(uniqueTeams) 中没有的值,然后查看我们的“toss_winner”列。

你必须小心,因为如果你有 team1 列 '加尔各答骑士骑士',但在 team2 列中你有'加尔各答骑士骑士s'。这些将被视为独特的团队,因此您必须在做任何其他事情之前真正清理您的数据。

【讨论】:

  • 我明白你在说什么,但我只是为了在这里提出我的问题而制作了这些数据,运行这段代码后我得到了这个输出:Series([], Name: toss_winner, dtype: object)跨度>
  • 这意味着team1和team2列中的每个团队都赢了!
猜你喜欢
  • 2016-03-14
  • 1970-01-01
  • 2023-02-01
  • 2018-08-05
  • 2021-03-16
  • 1970-01-01
  • 2018-04-02
  • 2015-08-03
  • 1970-01-01
相关资源
最近更新 更多