热线电话:13121318867

登录
2019-02-13 阅读量: 578
怎么将yyyymm格式列映射到数字列?

我有一个Pandas,DataFrame其中包含以下列Date:

Date

201611

201612

201701

我想要映射,所以我有一个句点列,第一个句点取值1,然后逐个开始计数直到最后一个句点,如下所示:

Date Period

201611 1

201612 2

201701 3

我实现了我想做的事情:

dic_t={}

for n,t in enumerate(sorted(df.Date.unique())):

dic_t[t]=n+1

df['Period']=df.Date.map(dic_t)

解决办法:

pd.factorize 可以对项列表进行排序并返回唯一的整数标签:

pd.factorize(['201611','201612','201701','201702','201704','201612'], sort=True)[0]+1

array([1, 2, 3, 4, 5, 2])

因此你可以使用

df['Period'] = pd.factorize(df['Date'], sort=True)[0] + 1

pd.factorize 返回标签数组和唯一值数组:

pd.factorize(['201611','201612','201701','201702','201704','201612'], sort=True)

(array([0, 1, 2, 3, 4, 1]),

array(['201611', '201612', '201701', '201702', '201704'], dtype=object))

因为,在这个问题中,你似乎只想要标签,我pd.factorize(...)[0]以前只获得标签。

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子