我有一个像这样的熊猫df:
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
.
.
答案 0 :(得分:1)
确保您的日期列是日期时间对象(如果不使用pd.to_datetime(df['Date'])
,您可以转换它们。否则它只是:
df['Year'] = df['Date'].dt.year
df2 = df.set_index(['Year'])
答案 1 :(得分:1)
使用set_index
和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