如何将预处理后的final列表更新至df_dict并转为Pandas DataFrame?
问题分析与解决方案
你的代码存在几处语法错误和逻辑缺失,导致无法得到期望的输出。以下是修正后的完整代码及关键改进说明:
修正后的完整代码
import pandas as pd # 修复字典语法错误,添加闭合括号 data = {'id': ['001', '002', '003'], '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"]} # 初始化DataFrame df = pd.DataFrame(data) df_dict = df.to_dict('records') for row in df_dict: add = row["address"] # 简化切片逻辑:直接取拆分后的最后3个部分,兼容所有长度情况 target_parts = add.split("\\n")[-3:] row['address'] = '\\n'.join(target_parts) # 转换为最终DataFrame并调整id格式 final_df = pd.DataFrame(df_dict) final_df['id'] = final_df['id'].astype(int) print(final_df)
关键改进点
- 修复语法错误:给
data字典添加了缺失的闭合},解决了初始语法报错问题 - 补全初始化步骤:新增
df = pd.DataFrame(data),正确创建初始DataFrame,避免df未定义的报错 - 简化地址处理逻辑:用
add.split("\\n")[-3:]替代冗余的if-else判断,无论原地址拆分后长度是否大于3,都能直接取最后3部分,逻辑更简洁高效 - 直接更新字典数据:循环中直接修改
row['address'],无需单独维护final列表后批量更新,代码更直观 - 补全最终转换步骤:将更新后的
df_dict转换为DataFrame,并可选将id转为整数类型,匹配你期望的输出格式
输出结果
id address 0 1 290 Valley Dr.\nCasper, WY 82604\nUSA 1 2 1180 Shelard Tower\nMinneapolis, MN 55426\nUSA 2 3 145 S. Durbin\nCasper, WY 82601\nUSA
内容的提问来源于stack exchange,提问作者Sushmitha
相关产品推荐
相关产品推荐

