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

Pandas单行拆分为多行及Year列计算TypeError问题解决

问题解决:TypeError: cannot convert the series to <class 'float'>

错误根源

你调用的math.floor()是Python标准库函数,仅支持单个数值输入,无法直接处理pandas Series这种向量型数据,这就是报错的核心原因。

修改后的代码

# Add column for number of week for each expanded job record row
df['Week Count'] = df.groupby(['Id']).cumcount() + 1 

# Add column for year for each job record row
import numpy as np
df['Year'] = np.where(
    (df['Starting Week period'] + df['Week Count'] - 1) > 52,
    df['Starting Year'] + np.floor((df['Starting Week period'] + df['Week Count']) / 52).astype(int),
    df['Starting Year']
)

# Add column for the number of week for the calendar year for each job record row
df['Week #'] = np.where(
    (df['Starting Week period'] + df['Week Count'] - 1) > 52,
    (df['Starting Week period'] + df['Week Count'] - 53),
    df['Starting Week period'] + df['Week Count'] - 1
)

# Add leading 0 to the Week # Column
df['Week #'] = df['Week #'].astype(str).str.pad(2, side='left', fillchar='0')

# Add a column Period which concatenates the Year and Week # columns 
df['Period'] = df['Year'].astype(str) + "-" + df['Week #'].astype(str)

关键改动说明

  1. 替换floor函数:用np.floor()替代math.floor(),numpy的floor是向量化实现,能直接处理整列Series数据,最后用.astype(int)转成整数(年份为整数类型更合理)。
  2. 修正列名错误:最后一行原代码的df['Week #']多了一个空格,改成df['Week #'],避免后续出现找不到列的错误。

额外验证建议

确保Starting Year、Starting Week period这两列是数值类型(int或float),如果是字符串格式,先通过df['Starting Year'] = df['Starting Year'].astype(int)转换类型,否则会出现运算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:42:47