1

我正在尝试对熊猫中的游戏数据进行一些统计分析。

我的原始数据由带有“home_team”和“away_team”的游戏存储(实际上,原始数据存储在 mongDb 中,具有非规范化的“teams”属性,该属性是两个团队的列表,便于查询所有比赛的球队)

当我将数据放入 DataFrame 时,我正在尝试决定如何索引我的数据。

如果我为每场比赛的每支球队输入一行,每场比赛我将有两行,并且很容易按球队找到比赛,但如果我尝试汇总所有比赛,它将有重复的行。

基本上我一直试图获得两个不同的子集(A队的所有比赛,以及特定时间段内的所有比赛)

对于我需要对数据进行切片的不同方式,我是否只需要两个不同的 DataFrame?

4

1 回答 1

0

如果这是你的 df:

                  Home_team Away_team  Home_score  Away_score
GameID Date                                                  
1      2013-01-23    Team A    Team B           5           1
2      2013-01-23    Team C    Team D           3           3
3      2013-01-30    Team A    Team C           1           2
4      2013-01-30    Team B    Team D           2           3

您可以按日期切片,例如:

start = pd.datetime(2013,1,20)
end = pd.datetime(2013,1,25)

selection = (df.index.get_level_values('Date') >= start) & (df.index.get_level_values('Date') <= end)

df[selection]

                  Home_team Away_team  Home_score  Away_score
GameID Date                                                  
1      2013-01-23    Team A    Team B           5           1
2      2013-01-23    Team C    Team D           3           3

并由团队:

team = ['Team C']

df[df.apply(lambda x: x.isin(team)).max(axis=1)]

或多个团队:

team = ['Team A','Team C']

df[df.apply(lambda x: x.isin(team)).max(axis=1)]

                  Home_team Away_team  Home_score  Away_score
GameID Date                                                  
1      2013-01-23    Team A    Team B           5           1
2      2013-01-23    Team C    Team D           3           3
3      2013-01-30    Team A    Team C           1           2

您可以稍微重新排列列和索引,但绝对不需要为此类查询使用两个 DF。

于 2013-07-25T08:36:53.447 回答