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

如何在Pandas字典中通过条件语句移除地址拆分后的指定元素?

问题解决:无法对str对象执行pop操作的修复方案

你遇到的错误是因为直接对字符串调用了pop()方法——Python的字符串是不可变类型,没有pop()方法,这个方法仅适用于列表。正确的做法是先将地址字符串拆分为行列表,修改列表后再重新拼接成字符串。

方法一:使用Pandas的apply函数(推荐,更高效)

通过自定义处理函数批量清洗地址列:

import pandas as pd

data = {'address': ["William J. Clare\n290 Valley Dr.\nCasper, WY 82604\nUSA",
                    "1180 Shelard Tower\nMinneapolis, MN 55426\nUSA",
                    "William N. Barnard\n145 S. Durbin\nCasper, WY 82601\nUSA",
                    "215 S 11th ST"]
        }

df = pd.DataFrame(data)

def clean_address(addr):
    # 将地址拆分为行列表
    lines = addr.split("\n")
    line_count = len(lines)
    # 根据行数执行不同的清理逻辑
    if line_count == 4:
        lines = lines[1:]  # 移除第一行
    elif line_count == 5:
        lines = lines[2:]  # 移除前两行
    # 将剩余行重新拼接为字符串
    return "\n".join(lines)

# 生成清洗后的地址列(也可以直接替换原列)
df['cleaned_address'] = df['address'].apply(clean_address)

print(df)

方法二:遍历字典列表(兼容你的原始代码逻辑)

如果坚持使用字典列表的方式,修改后的代码如下:

import pandas as pd

data = {'address': ["William J. Clare\n290 Valley Dr.\nCasper, WY 82604\nUSA",
                    "1180 Shelard Tower\nMinneapolis, MN 55426\nUSA",
                    "William N. Barnard\n145 S. Durbin\nCasper, WY 82601\nUSA",
                    "215 S 11th ST"]
        }

df = pd.DataFrame(data)
df_dict = df.to_dict('records')

for row in df_dict:
    addr_lines = row["address"].split("\n")
    line_len = len(addr_lines)
    if line_len == 4:
        addr_lines.pop(0)  # 移除第一行
    elif line_len == 5:
        addr_lines = addr_lines[2:]  # 移除前两行
    # 更新字典中的地址值
    row["address"] = "\n".join(addr_lines)

# 转换回DataFrame
cleaned_df = pd.DataFrame(df_dict)
print(cleaned_df)

核心修复点

  1. 先通过split("\n")将地址字符串转换为行列表
  2. 对列表使用切片或pop()方法移除指定元素(而非直接操作字符串)
  3. 最后用"\n".join(lines)将修改后的列表重新拼接为字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:25:20