Python 根据唯一对值筛选数据帧
我有一个熊猫数据框,其中包含关于两支球队在不同时间进行的比赛的信息:Python 根据唯一对值筛选数据帧,python,pandas,slice,Python,Pandas,Slice,我有一个熊猫数据框,其中包含关于两支球队在不同时间进行的比赛的信息: TeamA TeamB Time 1 2 12:06 1 2 13.14 1 3 14.14 1 3 13.14 3 1 15.22 获取“子”数据帧的最简单方法是什么(不是双倍循环),该数据帧只包含关于唯一团队对的信息,例如: 对于(1,2): 对于(1,3): 等等 编辑: 我事先不知道数据框中有哪些团队。也就是说,我需要为每一对可能的团队提供一个数据框架 创建数据帧字典
TeamA TeamB Time
1 2 12:06
1 2 13.14
1 3 14.14
1 3 13.14
3 1 15.22
获取“子”数据帧的最简单方法是什么(不是双倍循环),该数据帧只包含关于唯一团队对的信息,例如:
对于(1,2):
对于(1,3):
等等
编辑:
我事先不知道数据框中有哪些团队。也就是说,我需要为每一对可能的团队提供一个数据框架 创建数据帧字典:
dfs = dict(tuple(df.groupby(['TeamA','TeamB'])))
print (dfs[(1,2)])
TeamA TeamB Time
0 1 2 12:06
1 1 2 13.14
如果需要所有值:
for i, x in dfs.items():
print (x)
TeamA TeamB Time
0 1 2 12:06
1 1 2 13.14
TeamA TeamB Time
2 1 3 14.14
3 1 3 13.14
TeamA TeamB Time
4 3 1 15.22
如果想要在同一组中的最后一行:
cols = ['TeamA','TeamB']
a = df[cols].apply(sorted, 1)
dfs = dict(tuple(df.groupby([a[cols[0]], a[cols[1]]])))
for i, x in dfs.items():
print (x)
TeamA TeamB Time
0 1 2 12:06
1 1 2 13.14
TeamA TeamB Time
2 1 3 14.14
3 1 3 13.14
4 3 1 15.22
为什么(3,1)不被视为组2的一部分?将某个助手列中的团队A和团队B连接到一个排序列表中,然后此助手列(3,1)或(1,3)上的groupby也应该在同一组中,不是吗?你能回答我的问题吗?如果不是,那么我的答案是无效的,我想删除它。谢谢。是的,你认为它是第一组的一部分,但我不知道哪些队是可用的,然后简单地用字典循环,我把它加起来回答。谢谢,效果很好。但我的疑问是,从计算角度来看,这是否是最好的方法/您认为解决方案是否非常快?对于存储多个
数据帧
s是字典
非常好的选择。
print (dfs[(1,3)])
TeamA TeamB Time
2 1 3 14.14
3 1 3 13.14
for i, x in dfs.items():
print (x)
TeamA TeamB Time
0 1 2 12:06
1 1 2 13.14
TeamA TeamB Time
2 1 3 14.14
3 1 3 13.14
TeamA TeamB Time
4 3 1 15.22
cols = ['TeamA','TeamB']
a = df[cols].apply(sorted, 1)
dfs = dict(tuple(df.groupby([a[cols[0]], a[cols[1]]])))
for i, x in dfs.items():
print (x)
TeamA TeamB Time
0 1 2 12:06
1 1 2 13.14
TeamA TeamB Time
2 1 3 14.14
3 1 3 13.14
4 3 1 15.22