鱼C论坛

 找回密码
 立即注册
查看: 154|回复: 1

[已解决]python 运行报错,帮忙看一下原因

[复制链接]
发表于 2024-9-30 15:04:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c:\Users\Administrator\Desktop\python\最终完整版第三版(台账) copy 2.py:257: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '交强险' has dtype incompatible with float64, please explicitly cast to a compatible dtype first.
  last1_data.loc[(last1_data['产品名称'] == '机动车辆保险') & (last1_data['经纪费比例'] == 0.04),'统计产品名称'] = '交强险'  #如果产品名称为机动车险保险并且比例是0.04,那么统计名称为较强

c:\Users\Administrator\Desktop\python\最终完整版第三版(台账) copy 2.py:260: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '意外伤害保险' has dtype incompatible with float64, please explicitly cast to a compatible dtype first.
  last1_data.loc[last1_data['产品名称'] == '意外伤害保险', '险别小类名称'] = '意外伤害保险'
Traceback (most recent call last):
  File "c:\Users\Administrator\Desktop\python\最终完整版第三版(台账) copy 2.py", line 272, in <module>
    last1_data['出单时间'] = pd.to_datetime(last1_data['出单时间'], format='%Y/%m/%d')
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\tools\datetimes.py", line 1067, in to_datetime
    values = convert_listlike(arg._values, format)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\tools\datetimes.py", line 433, in _convert_listlike_datetimes
    return _array_strptime_with_fallback(arg, name, utc, format, exact, errors)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\tools\datetimes.py", line 467, in _array_strptime_with_fallback
    result, tz_out = array_strptime(arg, fmt, exact=exact, errors=errors, utc=utc)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "strptime.pyx", line 501, in pandas._libs.tslibs.strptime.array_strptime
  File "strptime.pyx", line 451, in pandas._libs.tslibs.strptime.array_strptime
  File "strptime.pyx", line 583, in pandas._libs.tslibs.strptime._parse_with_format
ValueError: time data "2024-08-08" doesn't match format "%Y/%m/%d", at position 0. You might want to try:
    - passing `format` if your strings have a consistent format;
    - passing `format='ISO8601'` if your strings are all ISO8601 but not necessarily in exactly the same format;
    - passing `format='mixed'`, and the format will be inferred for each element individually. You might want to use `dayfirst` alongside this.
最佳答案
2024-9-30 15:04:30
根据你提供的错误信息,主要有两个问题:

1. **FutureWarning**
   你在用 pandas 修改数据时,设置的数据类型与原数据类型不兼容。具体来说,你想将一个字符串(比如 '交强险')赋值给一个原本是 `float64` 类型的列。这在未来版本的 pandas 中会抛出错误。

   解决方法:在赋值之前明确地转换数据类型。例如:

last1_data['统计产品名称'] = last1_data['统计产品名称'].astype(str)
   last1_data.loc[(last1_data == '机动车辆保险') & (last1_data == 0.04), '统计产品名称'] = '交强险'

2. **ValueError**
   你在用 `pd.to_datetime` 函数转换日期格式时,格式不匹配。错误消息表明日期字符串 "2024-08-08" 不匹配你指定的格式 "%Y/%m/%d"。

   解决方法:检查你的数据,确保日期格式一致,或者使用适合的数据格式。例如:

last1_data = pd.to_datetime(last1_data, format='%Y-%m-%d')

如果数据格式多样,建议使用 `errors='coerce'` 参数处理错误数据:

last1_data = pd.to_datetime(last1_data, errors='coerce')

具体代码需要根据你的数据结构稍作调整,不过这样应该可以解决大部分问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-30 15:04:30 | 显示全部楼层    本楼为最佳答案   
根据你提供的错误信息,主要有两个问题:

1. **FutureWarning**
   你在用 pandas 修改数据时,设置的数据类型与原数据类型不兼容。具体来说,你想将一个字符串(比如 '交强险')赋值给一个原本是 `float64` 类型的列。这在未来版本的 pandas 中会抛出错误。

   解决方法:在赋值之前明确地转换数据类型。例如:

last1_data['统计产品名称'] = last1_data['统计产品名称'].astype(str)
   last1_data.loc[(last1_data == '机动车辆保险') & (last1_data == 0.04), '统计产品名称'] = '交强险'

2. **ValueError**
   你在用 `pd.to_datetime` 函数转换日期格式时,格式不匹配。错误消息表明日期字符串 "2024-08-08" 不匹配你指定的格式 "%Y/%m/%d"。

   解决方法:检查你的数据,确保日期格式一致,或者使用适合的数据格式。例如:

last1_data = pd.to_datetime(last1_data, format='%Y-%m-%d')

如果数据格式多样,建议使用 `errors='coerce'` 参数处理错误数据:

last1_data = pd.to_datetime(last1_data, errors='coerce')

具体代码需要根据你的数据结构稍作调整,不过这样应该可以解决大部分问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表