Python熊猫:将日期范围设为-2+;5年,例如:31年->;(29-36)年
将日期范围定为-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).
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-不客气!如果我的回答有帮助,别忘了。谢谢