我有一个熊猫数据框,其中包含两个团队在不同时间玩游戏的信息:
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
等
修改:
我事先并不知道数据框中存在的团队。那就是我需要为每一对可能的球队建立一个数据框架。
答案 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