如何使用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
相关产品推荐
相关产品推荐

