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

Python:替换含特定字符串列的值时赋值报错,如何解决?

动态匹配DataFrame列名并替换赋值问题

问题背景

需要找到名称包含year/month/day的DataFrame列,替换其值后重新赋值给该列。直接使用列筛选表达式赋值时触发语法错误,但硬编码具体列名时运行正常,希望实现无需写死列名的动态赋值。

错误代码与报错信息

错误代码:

df[df.columns[df.columns.str.contains('year/month/day')]].squeeze()=df[df.columns[df.columns.str.contains('year/month/day')]].squeeze().str.replace('year','-').str.replace('month','-').str.replace('day','')
print(df)

报错信息:

SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='?

可行解决方法

方法1:先获取匹配列名再赋值(支持多列匹配)

先提取所有符合条件的列名,再直接对这些列进行赋值操作:

# 获取所有包含指定字符串的列名
target_cols = df.columns[df.columns.str.contains('year/month/day')]
# 对匹配列执行替换并赋值
df[target_cols] = df[target_cols].squeeze().str.replace('year','-').str.replace('month','-').str.replace('day','')

方法2:单列场景下提取列名字符串赋值

如果确定只有一列符合条件,可以直接提取列名字符串后赋值:

# 获取目标列名(取第一个匹配的列)
target_col = df.columns[df.columns.str.contains('year/month/day')][0]
# 对该列执行替换并赋值
df[target_col] = df[target_col].str.replace('year','-').str.replace('month','-').str.replace('day','')

示例验证

输入DataFrame

import pandas as pd
data = {
    'birthday_year/month/day': ['2023year5month2day', '2019year6month29day'],
    'name': ['Jack', 'Lauren']
}
df = pd.DataFrame(data)

处理后输出

birthday_year/month/dayname
2023-5-2Jack
2019-6-29Lauren

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:15:07