Python熊猫:将日期范围设为-2+;5年,例如:31年->;(29-36)年

Python熊猫:将日期范围设为-2+;5年,例如:31年->;(29-36)年,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,将日期范围定为-2+5年,例如:31年->(29-36)年 我的意见是 age 0 31 years 1 25 years 我的输出是 age age_range 0 31 years 29-36 years 1 25 years 23-30 years 首先是数值,然后用加法2和减法5将其相加: s = df['age'].str.extract('(\d+)', expand=False).

将日期范围定为-2+5年,例如:31年->(29-36)年

我的意见是

     age          
0    31 years  
1    25 years  
我的输出是

     age       age_range   
0    31 years  29-36 years  
1    25 years  23-30 years
首先是数值,然后用加法
2
和减法
5
将其相加:

s = df['age'].str.extract('(\d+)', expand=False).astype(int)
df['age_range'] = s.sub(2).astype(str) + '-' + s.add(5).astype(str) + ' years'
另一个解决方案,感谢@IMCoins的建议:

#python 3.6+
df['age_range'] = [f'{x-2}-{x + 5} years' for x in s]
#python bellow
#df['age_range'] = ['{}-{} years'.format(x-2, x+5) for x in s]

print (df)
        age    age_range
0  31 years  29-36 years
1  25 years  23-30 years
如果需要常规范围,则使用。

首先使用数值,然后使用加法
2
和减法
5

s = df['age'].str.extract('(\d+)', expand=False).astype(int)
df['age_range'] = s.sub(2).astype(str) + '-' + s.add(5).astype(str) + ' years'
另一个解决方案,感谢@IMCoins的建议:

#python 3.6+
df['age_range'] = [f'{x-2}-{x + 5} years' for x in s]
#python bellow
#df['age_range'] = ['{}-{} years'.format(x-2, x+5) for x in s]

print (df)
        age    age_range
0  31 years  29-36 years
1  25 years  23-30 years

如果需要常规范围,请使用。

到目前为止,您尝试了什么?@IMCoins我尝试了pandas.cut,但无法找到它。您尝试了什么?@IMCoins我尝试了pandas.cut,但无法找到它。我个人会使用带有格式方法的字符串。读给我听确实更清楚。:)@showrya-不客气!如果我的回答有帮助,别忘了。谢谢。我个人会用一个字符串和format方法。读给我听确实更清楚。:)@showrya-不客气!如果我的回答有帮助,别忘了。谢谢