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

如何使用Pandas移除嵌套对象列表中字符串的首尾空格

解决DataFrame嵌套字段首尾空格问题

没问题,我来帮你搞定这个字符串首尾空格的清理工作!你的DataFrame里details字段是嵌套的列表字典结构,我们可以针对性地处理那些带空格的字符串字段,下面给你两种实用方案:

方案1:保留原结构,直接清理嵌套字段

先构造你的示例DataFrame(方便演示):

import pandas as pd

data = [
    {
        "name": "Book1",
        "details": [
            {
                "id": 30278752,
                "isbn": " 1594634025",
                "isbn13": "9781594634024 ",
                "text_reviews_count": 417,
                "work_reviews_count": 3313007,
                "work_text_reviews_count": 109912,
                "average_rating": " 3.92"
            }
        ]
    },
    {
        "name": "Book2",
        "details": [
            {
                "id": 34006942,
                "isbn": " 1501173219",
                "isbn13": " 9781501173219 ",
                "text_reviews_count": 565,
                "work_reviews_count": 2142280,
                "work_text_reviews_count": 75053,
                "average_rating": "4.33 "
            }
        ]
    }
]

df = pd.DataFrame(data)

接下来写一个清理函数,专门处理details里的字符串字段:

def clean_nested_details(details_list):
    # 遍历details列表里的每个字典
    cleaned_details = []
    for detail in details_list:
        cleaned_dict = {}
        for key, value in detail.items():
            # 只对字符串类型的字段执行strip()
            if isinstance(value, str):
                cleaned_dict[key] = value.strip()
            else:
                # 非字符串字段直接保留原值
                cleaned_dict[key] = value
        cleaned_details.append(cleaned_dict)
    return cleaned_details

# 把函数应用到details列
df['details'] = df['details'].apply(clean_nested_details)

这个方法的好处是完全保留你原来的DataFrame结构,不管details列表里有几个字典,都能批量清理所有字符串字段的首尾空格。

方案2:展开嵌套字段后清理(更适合后续分析)

如果之后需要对details里的字段做统计或分析,把嵌套结构展开成普通列会更方便:

# 先把details列表展开成单独的行(这里每个列表只有一个元素,所以不会新增行)
df_expanded = df.explode('details')
# 把details里的字典拆分成单独的列
df_expanded = pd.concat([df_expanded['name'], df_expanded['details'].apply(pd.Series)], axis=1)

# 指定需要清理的字符串字段
target_cols = ['isbn', 'isbn13', 'average_rating']
# 批量执行strip()
df_expanded[target_cols] = df_expanded[target_cols].apply(lambda col: col.str.strip())

处理完后,你会得到一个扁平化的DataFrame,所有目标字段的首尾空格都被移除了,后续做排序、筛选或者计算都更顺手。

你可以根据自己的需求选择其中一种方案,两种方法都能完美解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:28:11