如果您只有年份,请构造DatetimeIndex

时间:2014-08-18 12:30:48

标签: python pandas

我有结构数据

     country  year        POP
606  Algeria  1966  12339.140
730  Algeria  1968  13146.267
793  Algeria  1969  13528.304
856  Algeria  1970  13931.846
924  Algeria  1971  14335.388

现在我想根据年份(每年的差异)创建每个国家的第一个差异。如果不考虑间隔问题,我会按照

的方式做点什么。
df.sort(['country', 'year']).set_index(['country', 'year']).diff()

相反,我想我必须先转换year to_datetime()。是否有一种简单的方法可以从仅包含年份的列创建日期时间?是否有一种不同的更自然的方法来创造长期的差异?

1 个答案:

答案 0 :(得分:1)

你可以做到

df.set_index(df.year.map(lambda x: datetime.datetime(x, 1, 1)))

使用左开区间的概念。

另一种可能性是

df.set_index(df.year.map(pd.Period))

两者都返回同样明确定义的索引,在后一种情况下,您可能更喜欢df.diff()的输出,因为它实际上是一年。