几年到几十年

Years to Decades

我有一个名为 'va' 的 df,其中包含一个包含年份值的列 'contest_id'。例如,年份列中的记录将显示 73hod34,年份为 1973。我想创建一个包含第一个字符的列,以便我可以按十年而不是年份对数据进行编码。

此外,我还有一个 'years' 列 ('1973' == 1973),但出于某种原因,我无法将它从字符串转换为整数。如果有办法做到这一点或某些时间序列值,我可以将其更改为那么也许这可能是一个解决方案?

以下代码返回的列只是重复了 'years' 的条目:

va['decade'] = va[['contest_id']].apply(lambda x: x[0], axis = 1)

也试过

va['decade'] = va[['contest_id']].apply(lambda x: x[:0], axis = 1)

一些数据,根据要求:

Screenshot of my data from Excel

重申一下,我想在第三列添加十年,即使它只是一位数字(比如 7 代表 1970 年代) 预先感谢您的协助!

既然你有年份的专栏,我认为不需要对 contest_id 的字符串进行子集化,但这里有两个创建十年的专栏的解决方案。
由于您需要用一些 int 值表示年份,因此您可以将其转换为类别(因子): 这将产生以整个年份名称作为因素的列。

va['decade'] = va['year'].astype('category')  

或者,尝试:

va['decade'] = (va['contest_id'].apply(lambda x: x[:2])).astype('category')