pandas如何将含不同数量逗号分隔符的字符串列拆分为多个列
实现代码
你可以直接用pandas内置的字符串拆分方法实现,完整可运行代码如下:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'Q10': {2: 'A,B', 3: 'C', 4: 'A,E,B,C', 5: 'P'}}) # 按逗号拆分列,不足位置自动补NaN split_result = df['Q10'].str.split(',', expand=True) # 生成符合要求的列名,两种可选方式: # 方式1:手动定义序数词,适合拆分后列数少的场景 ordinal = ['first', 'second', 'third', 'fourth', 'fifth'] split_result.columns = [f'Q10_{ordinal[i]}_value' for i in range(split_result.shape[1])] # 方式2:自动生成序数后缀,适合拆分后列数多的场景 # split_result.columns = [ # f'Q10_{i+1}{"st" if i%10==0 and i not in (10,11,12) else "nd" if i%10==1 and i not in (10,11,12) else "rd" if i%10==2 and i not in (10,11,12) else "th"}_value' # for i in range(split_result.shape[1]) # ] # 合并回原表(不需要保留原Q10列的话直接写 df = split_result 即可) df = pd.concat([df, split_result], axis=1)
效果验证
运行后得到的DataFrame拆分列完全符合要求,不足位置自动填充NaN,列名格式为Q10_first_value、Q10_second_value依次递增。
内容的提问来源于stack exchange,提问作者Reichy
相关产品推荐
相关产品推荐

