2016-08-25 72 views
3

我有一些數據,並使用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 

如何創建一個大熊貓數據幀從這裏year爲一列,並命名爲sightings另一列?

我是一個熊貓新手,所以不知道我在做什麼。我曾嘗試reindexunstack功能,但一直沒能得到我想要的東西......

回答

2

您可以使用reset_indexrename列:

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=Falsegroupby返回DataFrame

import pandas as pd 

df = pd.DataFrame({'A':[1,1,3], 
        'B':[4,5,6]}) 

print (df) 
    A B 
0 1 4 
1 1 5 
2 3 6 

print (df.groupby('A')['B'].sum()) 
A 
1 9 
3 6 
Name: B, dtype: int64 

print (df.groupby('A', as_index=False)['B'].sum()) 
    A B 
0 1 9 
1 3 6 
+0

第二種解決方案是正是我需要的,謝謝大家。(我會接受當我可以) –

+1

謝謝。也許有一個問題 - 你用什麼樣的groupby?因爲有時幫助將參數'as_index = False'添加到'groupby',並返回好的DataFrame。它適用於groupby和aggragating sum,意思是... – jezrael

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'}) 
相關問題