我怎样才能将这个系列变成熊猫数据帧?

时间:2016-08-25 07:39:18

标签: python pandas dataframe multiple-columns series

我有一些数据,在使用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

我是一名熊猫新手所以不要真的知道我在做什么。我尝试了reindexunstack功能,但未能得到我想要的内容......

3 个答案:

答案 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)

s.rename('sightings').reset_index()

enter image description here

答案 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'})