2016-10-17 10 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 

その後、から日付範囲と転送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

@ジョン・ガルト - しかし、このように、私は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

関連する問題