python - Pandas Dataframe:查找共享值的条目(例如所有包含玩家的游戏)
问题描述
我有一个包含羽毛球俱乐部比赛历史的 CSV 文件。我希望能够找到有关包含给定玩家的游戏的信息(例如,“比尔”和谁玩得最多?)。以下是两轮三场比赛的示例:
import pandas as pd
player_data = player_data = pd.DataFrame(data=[
('2018-06-12', 1, 1, 1, 'Adam'),
('2018-06-12', 1, 1, 2, 'Bill'),
('2018-06-12', 1, 1, 3, 'Cindy'),
('2018-06-12', 1, 1, 4, 'Derek'),
('2018-06-12', 1, 2, 1, 'Edward'),
('2018-06-12', 1, 2, 2, 'Fred'),
('2018-06-12', 1, 2, 3, 'George'),
('2018-06-12', 1, 2, 4, 'Harry'),
('2018-06-12', 1, 3, 1, 'Ian'),
('2018-06-12', 1, 3, 2, 'Jack'),
('2018-06-12', 1, 3, 3, 'Karl'),
('2018-06-12', 1, 3, 4, 'Laura'),
('2018-06-12', 2, 1, 1, 'Karl'),
('2018-06-12', 2, 1, 2, 'Cindy'),
('2018-06-12', 2, 1, 3, 'Bill'),
('2018-06-12', 2, 1, 4, 'Derek'),
('2018-06-12', 2, 2, 1, 'Max'),
('2018-06-12', 2, 2, 2, 'George'),
('2018-06-12', 2, 2, 3, 'Fred'),
('2018-06-12', 2, 2, 4, 'Ian'),
('2018-06-12', 2, 3, 1, 'Nigel'),
('2018-06-12', 3, 3, 2, 'Edward'),
('2018-06-12', 3, 3, 3, 'Harry'),
('2018-06-12', 3, 3, 4, 'Adam')],
columns=['Date', 'Round #', 'Court #', 'Space', 'Name'])
然而,由于每一行都是一个单独的玩家的条目,只需按名称定位,例如
player_data.loc[player_data['Name'] == 'Bill']
只会返回 Bill 的个人条目,如下所示:
Date Round # Court # Space Name
1 2018-06-12 1 1 2 Bill
14 2018-06-12 2 1 3 Bill
...当我想要一个包含比尔玩过的所有游戏条目的新数据框时,在这种情况下它将显示为:
Date Round # Court # Space Name
0 2018-06-12 1 1 1 Adam
1 2018-06-12 1 1 2 Bill
2 2018-06-12 1 1 3 Cindy
3 2018-06-12 1 1 4 Derek
12 2018-06-12 2 1 1 Karl
13 2018-06-12 2 1 2 Cindy
14 2018-06-12 2 1 3 Bill
15 2018-06-12 2 1 4 Derek
我认为将原始数据帧转换为一个可能更容易,其中每个条目都是一个单独的游戏,该游戏的所有玩家姓名都列在一个元组中,因此检查“如果名称中的名称”相对简单“?例如
Date Round # Court # Names
0 2018-06-12 1 1 (Adam, Bill, Cindy, Derek)
...但也许这会导致其他问题。
解决方案
过滤后使用merge
s1=player_data.loc[player_data['Name'] == 'Bill',['Date','Round #','Court #']]
s2=s1.merge(player_data,how='left')
s2
Out[12]:
Date Round # Court # Space Name
0 2018-06-12 1 1 1 Adam
1 2018-06-12 1 1 2 Bill
2 2018-06-12 1 1 3 Cindy
3 2018-06-12 1 1 4 Derek
4 2018-06-12 2 1 1 Karl
5 2018-06-12 2 1 2 Cindy
6 2018-06-12 2 1 3 Bill
7 2018-06-12 2 1 4 Derek
推荐阅读
- sql - 按条件按前几行分组
- swift - 通过 watchConnectivity 以纯文本形式传递数据是否安全?
- xslt - XSLT 中相同 xml 标记上的多个值
- c - 没有 p=p->link 的链表箭头运算符循环
- ios - 斯威夫特,有没有办法在文本末尾对齐项目?
- unity3d - 如何在 Unity 中的程序网格上添加草
- javascript - 如何按天、1小时、6小时、8小时、周、月和年对日期数组和总和值进行分组?
- c++ - 将 C++ 向量输入到 C 函数中
- javascript - jQuery UI 日期选择器不工作 | jQuery 3.3.1
- android-layout - 如何在线性布局中完全填充剩余空间?