猿问

Python 列表到索引数据框

我有一个索引和打印的列表;此处显示的示例:


[Home Team                     season   

 1. FC Kaiserslautern          2010/2011     48

                               2011/2012     24

 1. FC Köln                    2008/2009     35

                               2009/2010     33

                               2010/2011     47

                               2011/2012     39

                               2014/2015     34

                               2015/2016     38

 1. FC Nürnberg                2009/2010     32

                               2010/2011     47

                               2011/2012     38

                               2012/2013     39

                               2013/2014     37

不过,我无法将其转换为相同格式的 Pandas 数据帧。使用df = pd.DataFrame(df)创建一个单行数据框,所有内容都成束。


我获取列表的代码是:


df = []

home_goals = leaguesFinal.groupby(('Home Team', 'season'))['home_team_goal'].sum()

away_goals = leaguesFinal.groupby(('Away Team', 'season'))['away_team_goal'].sum()

df.append((home_goals + away_goals))

我只是想总结每支球队每个赛季的主客场进球数。如果有更好的方法来做到这一点,一般我都会听。虽然为了更容易操作,我最终还是想要一个数据框。


慕森王
浏览 225回答 1
1回答

茅侃侃

我相信需要rename_axis使用add和DataFrame使用相同名称的 MultiIndex reset_index:leaguesFinal = pd.DataFrame({    'Home Team': ['b','a','a','c','b','a'],    'Away Team': ['a','b','c','a','a','b'],    'season': ['2010/2011'] * 3 + ['2012/2013'] * 3,    'home_team_goal': [1,2,3,4,3,2],    'away_team_goal': [4,6,7,8,2,1]})print (leaguesFinal)  Home Team Away Team     season  home_team_goal  away_team_goal0         b         a  2010/2011               1               41         a         b  2010/2011               2               62         a         c  2010/2011               3               73         c         a  2012/2013               4               84         b         a  2012/2013               3               25         a         b  2012/2013               2               1home_goals = leaguesFinal.groupby(['Home Team', 'season'])['home_team_goal'].sum()away_goals = leaguesFinal.groupby(['Away Team', 'season'])['away_team_goal'].sum()print (home_goals)Home Team  season   a          2010/2011    5           2012/2013    2b          2010/2011    1           2012/2013    3c          2012/2013    4Name: home_team_goal, dtype: int64print (away_goals)Away Team  season   a          2010/2011     4           2012/2013    10b          2010/2011     6           2012/2013     1c          2010/2011     7Name: away_team_goal, dtype: int64a = home_goals.rename_axis(['Team','season'])b = away_goals.rename_axis(['Team','season'])df = (a.add(b, fill_value=0)).reset_index(name='both')print (df)  Team     season  both0    a  2010/2011   9.01    a  2012/2013  12.02    b  2010/2011   7.03    b  2012/2013   4.04    c  2010/2011   7.05    c  2012/2013   4.0
随时随地看视频慕课网APP

相关分类

Python
我要回答