Python列表到索引数据框
Posted
技术标签:
【中文标题】Python列表到索引数据框【英文标题】:Python List to Indexed Dataframe 【发布时间】:2019-02-04 05:08:03 【问题描述】:我有一个已编入索引并打印出来的列表;此处显示的示例:
[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))
我只是想总结每支球队每个赛季的主客场进球数。如果有更好的方法来做到这一点,我会全力以赴。最后我想要一个数据框,以便于操作。
【问题讨论】:
对不起,我在I'm unable to convert this to a pandas dataframe in the same format though.
丢了你和什么格式一样?
我迷失了你的列表示例,它看起来根本不像列表。
@jpp 格式相同,第 0 列应该是团队名称,第 1 列是年份,第 2 列是目标。我提到它使用单行创建数据框,所有信息都在同一行中,也就是与图片中的格式不同
@Goyo 抱歉,它看起来不像一个列表。虽然是df = []
【参考方案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_goal
0 b a 2010/2011 1 4
1 a b 2010/2011 2 6
2 a c 2010/2011 3 7
3 c a 2012/2013 4 8
4 b a 2012/2013 3 2
5 a b 2012/2013 2 1
home_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 2
b 2010/2011 1
2012/2013 3
c 2012/2013 4
Name: home_team_goal, dtype: int64
print (away_goals)
Away Team season
a 2010/2011 4
2012/2013 10
b 2010/2011 6
2012/2013 1
c 2010/2011 7
Name: away_team_goal, dtype: int64
a = 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 both
0 a 2010/2011 9.0
1 a 2012/2013 12.0
2 b 2010/2011 7.0
3 b 2012/2013 4.0
4 c 2010/2011 7.0
5 c 2012/2013 4.0
【讨论】:
以上是关于Python列表到索引数据框的主要内容,如果未能解决你的问题,请参考以下文章