2016-10-17 44 views
0

我有一個熊貓DF這樣的:如何在Pandas中將日期間隔轉換爲日期索引?

color start   end 
red  01/01/1980 31/12/1982 
blue 01/01/1983 31/12/1988 
blue 01/01/1989 31/12/1995 
red  01/01/1996 31/12/1997 
blue 01/01/1998 31/12/1999 
red  01/01/2000 31/12/2004 

如何轉變的日期間隔成一個指數,僅在今年保持?就像這樣:

1980 red 
1981 red 
1982 red 
1983 blue 
1984 blue 
. 
. 

回答

1

使用​​和reindex,並ffill向前填充缺失值,你可以從日期範圍得到

In [319]: dff = df.set_index(pd.to_datetime(df['start']).dt.year)['color'] 

In [320]: dff 
Out[320]: 
start 
1980  red 
1983 blue 
1989 blue 
1996  red 
1998 blue 
2000  red 
Name: color, dtype: object 

然後reindex和轉發ffill缺失值。

In [321]: dff.reindex(range(dff.index.min(), dff.index.max()+1)).ffill() 
Out[321]: 
start 
1980  red 
1981  red 
1982  red 
1983 blue 
1984 blue 
1985 blue 
1986 blue 
1987 blue 
1988 blue 
1989 blue 
1990 blue 
1991 blue 
1992 blue 
1993 blue 
1994 blue 
1995 blue 
1996  red 
1997  red 
1998 blue 
1999 blue 
2000  red 
Name: color, dtype: object 
+0

不錯。好的。 – ComputerFellow

+0

不錯的行爲,歡呼聲。 – cJc

+0

@John Galt - 雖然有一件事,這種方式我不會得到2001年,2002年,2003年和2004年,這應該都是'紅'。 – cJc

1

確保您的日期欄,datetime對象(你可以在不使用pd.to_datetime(df['Date'])將它們轉換,否則它只是:

df['Year'] = df['Date'].dt.year 
df2 = df.set_index(['Year']) 
+0

事情是我沒有'日期'欄,而是'開始'和'結束'。 – cJc

相關問題