我有一些数据,在使用groupby函数后,我现在有一个如下所示的系列:
year
1997 15
1998 22
1999 24
2000 24
2001 28
2002 11
2003 15
2004 19
2005 10
2006 10
2007 21
2008 26
2009 23
2010 16
2011 33
2012 19
2013 26
2014 25
如何从此处创建一个pandas数据框,其中year
为一列,另一列为sightings
?
我是一名熊猫新手所以不要真的知道我在做什么。我尝试了reindex
和unstack
功能,但未能得到我想要的内容......
答案 0 :(得分:2)
您可以使用reset_index
和.selected span
列:
rename
print (df.reset_index())
index year
0 1997 15
1 1998 22
2 1999 24
3 2000 24
4 2001 28
5 2002 11
6 2003 15
7 2004 19
8 2005 10
9 2006 10
10 2007 21
11 2008 26
12 2009 23
13 2010 16
14 2011 33
15 2012 19
16 2013 26
17 2014 25
另一种解决方案是按名称列表设置列名:
print (df.reset_index().rename(columns=({'index':'year','year':'sightings'})))
year sightings
0 1997 15
1 1998 22
2 1999 24
3 2000 24
4 2001 28
5 2002 11
6 2003 15
7 2004 19
8 2005 10
9 2006 10
10 2007 21
11 2008 26
12 2009 23
13 2010 16
14 2011 33
15 2012 19
16 2013 26
17 2014 25
编辑:
有时帮助将参数df1 = df.reset_index()
df1.columns = ['year','sightings']
print (df1)
year sightings
0 1997 15
1 1998 22
2 1999 24
3 2000 24
4 2001 28
5 2002 11
6 2003 15
7 2004 19
8 2005 10
9 2006 10
10 2007 21
11 2008 26
12 2009 23
13 2010 16
14 2011 33
15 2012 19
16 2013 26
17 2014 25
添加到as_index=False
以便返回groupby
:
DataFrame
答案 1 :(得分:2)
答案 2 :(得分:0)
我还在groupby阶段使用此方法将结果直接放入数据帧:
df2 = df1.groupby(['Year']).count()
df3 = pd.DataFrame(df2).reset_index()
如果您的原始数据框 - df1 - 有“年”和“瞄准”,因为它是两列,那么df3应该每年都列在“年份”下,并且“瞄准”下列出的计数(或总和,平均值等)。
如果没有,您可以通过执行以下操作来更改列名称:
df3.columns = ['Year','Sightings']
或
df3 = df3.rename(columns={'oldname_A': 'Year', 'oldname_B': 'Sightings'})