我有结构数据
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()
。是否有一种简单的方法可以从仅包含年份的列创建日期时间?是否有一种不同的更自然的方法来创造长期的差异?
答案 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()
的输出,因为它实际上是一年。