在唯一对值

时间:2017-10-26 10:08:48

标签: 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):

TeamA   TeamB   Time

1   2   12:06
1   2   13.14

对于(1,3):

TeamA   TeamB   Time

1   3   14.14
1   3   13.14

修改

我事先并不知道数据框中存在的团队。那就是我需要为每一对可能的球队建立一个数据框架。

1 个答案:

答案 0 :(得分:3)

创建dictionary of DataFrames

dfs = dict(tuple(df.groupby(['TeamA','TeamB'])))
print (dfs[(1,2)])
   TeamA  TeamB   Time
0      1      2  12:06
1      1      2  13.14
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