Python pandas拆分分号分隔的EMP_ID列并合并为单列的方法
解决Pandas拆分分号分隔列并合并为单列的问题
需求说明
需将DataFrame中以分号;分隔的EMP_ID列拆分后合并为单列,同时过滤拆分产生的空字符串(比如原数据末尾分号、连续分号导致的空值)。
高效解决方案
不用先拆多列再合并,直接用str.split+explode一步完成,代码简洁且灵活:
import pandas as pd # 读取数据库数据(你的原有代码) df = pd.read_sql("SELECT DISTINCT EMP_ID FROM TABLE", conn) # 拆分、展开并过滤空值 df_result = df['EMP_ID'].str.split(';', expand=False).explode().replace('', pd.NA).dropna().to_frame('EMP_ID') # 查看结果 print(df_result)
代码解释
str.split(';', expand=False):将每个EMP_ID字符串按分号拆分为列表,expand=False让结果保留为Series内的列表,而非拆成多列。explode():把每个列表里的元素单独拆成一行,实现列转行。replace('', pd.NA).dropna():将拆分出的空字符串替换为缺失值后删除,处理原数据里的无效空值。to_frame('EMP_ID'):将处理后的Series转回DataFrame,保留原列名。
你之前尝试的问题分析
- 第一种拆多列的方法:需要提前预估拆分后的字段数量,后续合并多列也繁琐,灵活性差。
- 第二种
df.split(";"):DataFrame对象没有split方法,必须对EMP_ID这个Series调用str.split方法才行。
内容的提问来源于stack exchange,提问作者Animesh Jain
相关产品推荐
相关产品推荐

