如何拆分Pandas DataFrame中swaps列的长字符串为多行
解决方法
你遇到的问题应该是swaps列的超长字符串其实是JSON格式的数组,只需要把它解析成Python列表,再用Pandas的explode方法就能展开成多行。以下是具体步骤:
步骤1:导入必要库
import pandas as pd import json
步骤2:解析字符串为列表
把swaps列的字符串转成Python列表,同时加容错机制避免解析失败中断程序:
def parse_swaps_str(s): try: return json.loads(s) if isinstance(s, str) else s except (json.JSONDecodeError, TypeError): return [] # 解析失败返回空列表 # 应用到目标列 df['swaps'] = df['swaps'].apply(parse_swaps_str)
步骤3:展开成多行
用explode方法把列表拆成单独的行,其他列内容会自动对应重复:
# ignore_index=True重置新DataFrame的索引 df_expanded = df.explode('swaps', ignore_index=True)
额外处理(如果swaps元素是字典)
如果展开后的swaps元素是字典,还可以把它拆成多列:
# 拆分字典为独立列,并和原DataFrame合并 df_final = df_expanded.drop('swaps', axis=1).join(pd.json_normalize(df_expanded['swaps']))
完成后,原来的一行会根据swaps列表的长度拆成对应行数,比如列表含1000个元素就会生成1000行。
内容的提问来源于stack exchange,提问作者Boxterr
相关产品推荐
相关产品推荐

