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

Pandas添加DataFrame字段函数报错:TypeError: string indices must be integers

问题排查与修复

核心错误原因

调用函数时,你把df参数传成了字符串'my_df1',而非实际的DataFrame对象。当函数执行df[df_field_existing_str]时,相当于对字符串'my_df1'用方括号取索引,而字符串仅支持整数索引,因此抛出TypeError: string indices must be integers。

额外逻辑问题

函数内部存在冗余无效操作:

  • 每一步都在操作原字段df_field_existing_str,而非新字段df_field_new,导致前面的replace和strip操作完全失效,直接跳过这些步骤用原字段转日期。
  • 第一步将新字段赋值为原字段,后续又覆盖该值,属于无效代码。

修复后的代码

修正后的函数

import pandas as pd

def create_new_date_column_in_df_based_on_other_date_string_column(df, df_field_existing_str, df_field_new):
    # 逐步处理原字段的字符串格式
    processed_date = df[df_field_existing_str].str.replace('12:00:00 AM', '')
    processed_date = processed_date.str.strip()
    # 将处理后的字符串转为指定格式的日期,赋值给新字段
    df[df_field_new] = pd.to_datetime(processed_date).dt.strftime('%m-%d-%Y')
    # 返回整个DataFrame,更符合“向现有DataFrame添加字段”的需求
    return df

正确的调用方式

# 确保my_df1是实际存在的pandas DataFrame对象
create_new_date_column_in_df_based_on_other_date_string_column(df=my_df1, df_field_existing_str='existingfieldname', df_field_new='newfieldname')

说明

  1. 调用时必须传入实际的DataFrame对象,不能传DataFrame的名称字符串。
  2. 调整函数内部逻辑,让每一步字符串处理都能作用到最终的日期转换流程中。
  3. 若仅需要返回新字段的Series,可将返回值改为df[df_field_new],但返回整个DataFrame更贴合函数设计目的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:00:57