如何在Pandas中无需循环,按Full code后缀生成列并填充Score值?
解决方案
实现思路
不用循环的话,直接借助Pandas的字符串拆分+透视表功能就能快速完成需求,核心是把Full code的后缀拆出来,再通过透视表重塑成目标格式。
完整代码
import pandas as pd # 构造原始DataFrame df1 data = { 'Full code': ['1111-ABC', '0000-ABC', 'AP00-ABC', '1234-XYZ'], 'Semi-code': ['1111', '0000', 'AP00', '1234'], 'Score': [1, 2, 1, 2] } df1 = pd.DataFrame(data) # 从Full code中拆分出后缀(ABC/XYZ) df1['Suffix'] = df1['Full code'].str.split('-', expand=True)[1] # 透视生成目标DataFrame df2 df2 = df1.pivot(index='Semi-code', columns='Suffix', values='Score').reset_index() # 移除列索引的名称,让表头格式和目标一致 df2.columns.name = None print(df2)
运行结果
Semi-code ABC XYZ 0 0000 2.0 NaN 1 1111 1.0 NaN 2 1234 NaN 2.0 3 AP00 1.0 NaN
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

