Python 根据循环的另一个数据帧的条件创建新的数据帧
利用2017年NFL四分卫数据,希望将每周排名前10位的QB与其他数据一起放在一个数据框中 为此,我们希望每周将前2名返回到新的数据帧中Python 根据循环的另一个数据帧的条件创建新的数据帧,python,pandas,for-loop,dataframe,Python,Pandas,For Loop,Dataframe,利用2017年NFL四分卫数据,希望将每周排名前10位的QB与其他数据一起放在一个数据框中 为此,我们希望每周将前2名返回到新的数据帧中 week qb pts 1 Rodgers 30 1 Brady 24 2 Rodgers 31 2 Wilson 26 我尝试了一个for循环,该循环可以获取数据,但无法将其放入数据帧中 top10_17 = pd.DataFrame() for i in range
week qb pts
1 Rodgers 30
1 Brady 24
2 Rodgers 31
2 Wilson 26
我尝试了一个for循环,该循环可以获取数据,但无法将其放入数据帧中
top10_17 = pd.DataFrame()
for i in range(1, 18):
i_17 = qb_2017.loc[qb_2017['Week'] == i].sort_values('FantasyPoints', ascending=False)[:10]
top10_17 = pd.concat(i_17)
NFL赛季17周的使用范围(1,18)
grouped = qb_df.groupby('week')
print(grouped.head(2))
这假设您的列表已排序,可以使用
pandas.sort_values()
IIUCsort_values
withgroupby
+head
df.sort_values('pts',ascending=False).groupby('week').head(2).sort_values('week')
Out[49]:
pts qb week
0 30 Rodgers 1
1 24 Brady 1
3 31 Rodgers 2
5 26 Wilson 2
您也可以这样做:
qb_df.set_index('qb').groupby('week')['pts'].nlargest(2)
week qb
1 Rodgers 30
Brady 24
2 Rodgers 31
Wilson 26
Name: pts, dtype: int64
如果格式对于保持不变非常重要:
qb_df.set_index('qb').groupby('week')['pts'].nlargest(2).reset_index()
week qb pts
0 1 Rodgers 30
1 1 Brady 24
2 2 Rodgers 31
3 2 Wilson 26
qb_df.set_index('qb').groupby('week')['pts'].nlargest(2).reset_index()
week qb pts
0 1 Rodgers 30
1 1 Brady 24
2 2 Rodgers 31
3 2 Wilson 26