Python实现DataFrame按productID去重 转置Key为列填充Status值
你这个需求属于典型的长表转宽表场景,直接用Pandas内置的pivot透视方法即可实现,完整实现代码如下:
import pandas as pd # ---------------------- # 如果你是从文件读取原始数据,替换下面的样例数据构造代码即可 # 例如 df = pd.read_excel("你的文件路径.xlsx") 或者 df = pd.read_csv("你的文件路径.csv") # ---------------------- # 构造样例原始数据(仅测试用) data = { 'productID': [123, 123, 123, 123, 124, 124, 124], 'Key': ['AB', 'BC', 'CD', 'DE', 'AB', 'DE', 'FG'], 'Status': ['Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes'] } df = pd.DataFrame(data) # 执行转换逻辑 wide_df = df.pivot( index='productID', columns='Key', values='Status' ).reset_index() # 空值替换为空字符串,调整列名匹配目标格式 wide_df = wide_df.fillna('').rename(columns={'productID': 'ProductID'}) # 输出结果验证 print(wide_df)
代码逻辑说明
pivot方法指定productID作为行维度,Key列的唯一值作为新的列名,Status的值填充对应单元格fillna('')将无匹配的空缺位置替换为空字符串,符合你要求的空缺留空效果reset_index()将行索引的productID转回普通表格列,rename方法用于匹配目标格式首字母大写的ProductID列名,如果你不需要调整列名可以去掉这部分逻辑
内容的提问来源于stack exchange,提问作者Athens396
相关产品推荐
相关产品推荐

