You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Mongosh中将字符串转整数,计算诺贝尔奖得主获奖时年龄

计算诺贝尔奖获奖者获奖时的年龄

方法一:Python Pandas(快速年份差计算)

如果已经能截取出生年份字符串,直接转整数后做减法即可:

  1. 提取出生年份并转换为整数:
    import pandas as pd
    
    # 假设你的数据集是df,包含birth_date和award_year列
    df['birth_year'] = df['birth_date'].str[:4].astype(int)
    
  2. 计算获奖年龄:
    df['award_age'] = df['award_year'] - df['birth_year']
    

也可以一步完成,省去中间列:

df['award_age'] = df['award_year'] - df['birth_date'].str[:4].astype(int)

如果存在birth_date为空的情况,用apply处理缺失值:

df['award_age'] = df.apply(
    lambda row: row['award_year'] - int(row['birth_date'][:4]) if pd.notna(row['birth_date']) else None,
    axis=1
)

方法二:更精确的年龄计算(考虑生日月份)

如果要准确判断获奖者当年是否过了生日,避免年份差多算1岁,可以用日期类型计算:

# 转换birth_date为日期格式,无效日期设为NaN
df['birth_date'] = pd.to_datetime(df['birth_date'], errors='coerce')
# 假设诺贝尔奖颁奖日期为每年12月10日,生成获奖日期
df['award_date'] = pd.to_datetime(df['award_year'].astype(str) + '-12-10')
# 计算精确年龄(取年份整数部分)
df['award_age'] = (df['award_date'] - df['birth_date']).astype('<m8[Y]')

方法三:SQL场景(如果数据存在数据库中)

如果你的数据集存储在SQL数据库中,用字符串截取+类型转换实现:

  • MySQL:
    SELECT 
        award_year - CAST(SUBSTRING(birth_date, 1, 4) AS UNSIGNED) AS award_age
    FROM nobel_winners;
    
  • PostgreSQL:
    SELECT 
        award_year::INT - SUBSTRING(birth_date FROM 1 FOR 4)::INT AS award_age
    FROM nobel_winners;
    

内容的提问来源于stack exchange,提问作者Le_user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:10:53