我有一个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]以前只获得标签。








暂无数据