|
|
很可能是 pandas 版本更新导致赋值时类型自动转换失效。我用 python3.8 运行 pandas2.0.3 未触发错误。
你可以按照以下方式逐个尝试:
1.强制转换类型:
使用现在的 pandas,对 DataFrame 对象添加一行代码,改一次即可满足程序下面所有操作:
- last1_data['统计产品名称'] = last1_data['统计产品名称'].astype('object')
复制代码
或者直接修改打开文件的方式:(可能会降低性能)
- pandas.read_excel(r'XXXX\XXXX.xlsx',dtype='object')
复制代码
2.安装指定版本的 pandas。
首先,卸载python3.14,安装python3.8,然后
- pip install pandas
- pip install openpyxl
复制代码
python 3.8 会安装 pandas 较低(不是很低)的版本 2.0.3,应该可支持程序正常运行
注意: pandas 1.x 版本行为与 pandas 2.x 有不同,不能支持你想要的那种类型自动转换
以下是一些参考:
https://chat.deepseek.com/share/w4mbuyoiucsm0sslio
我的测试:
- Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license()" for more information.
- >>> import pandas
- >>> pandas.read_excel(r'D:\data.xlsx')
- 产品名称 费用 统计产品名称
- 0 文字 0.04 NaN
- 1 汉字 1.04 NaN
- 2 3.56 2.04 NaN
- 3 3 3.04 NaN
- 4 文字 4.04 NaN
- >>> a = _
- >>> a['统计产品名称']
- 0 NaN
- 1 NaN
- 2 NaN
- 3 NaN
- 4 NaN
- Name: 统计产品名称, dtype: float64
- >>> a.loc[(a['产品名称'] == '文字') & (a['费用'] == 0.04),'统计产品名称'] = '文字2'
- >>> a
- 产品名称 费用 统计产品名称
- 0 文字 0.04 文字2
- 1 汉字 1.04 NaN
- 2 3.56 2.04 NaN
- 3 3 3.04 NaN
- 4 文字 4.04 NaN
- >>> a['统计产品名称']
- 0 文字2
- 1 NaN
- 2 NaN
- 3 NaN
- 4 NaN
- Name: 统计产品名称, dtype: object
复制代码 |
|