我正在做一个大型项目,我需要组合多个数据框来执行其余的分析。问题是所有其他数据帧,但其中一个具有唯一的唯一标识符,设置为ZZZ-999。问题数据帧可以但不总是具有两个值设置为ZZZ-999 ABCD或ZZZ-999 EFGH。字段示例
主数据框(要添加列)
Unit ID | Region | Unit Value
ZZZ-997 East 100
ZZZ-998 West 200
ZZZ-999 South 300
DataFrame需要与主DataFrame结合
Unit ID | Product Type | Individual Value | Final Disposition
ZZZ-997 ZZZ-997 ABCD 50 Returned
ZZZ-997 ZZZ-997 EFGH 50 Returned
ZZZ-998 ZZZ-998 ABCD 200 Order Closed
ZZZ-999 ZZZ-999 ABCD 100 Order Closed
ZZZ-999 ZZZ-999 EFGH 200 Returned
我想要的结果是:
Unit ID | Region | Unit Value | Individual Value ABCD | Final Disposition ABCD | Individual Value EFGH | Final Disposition EFGH
ZZZ-999 South 300 100 Returned 200 Order Closed
我尝试执行此操作涉及pd.dataframe.iterrows()在两个数据帧之间创建循环,并使用dataframe.loc()组合以永久添加到仓库中。问题是每行数据要花几秒钟,而我有超过10万行数据。结合以上数据集的最有效方法是什么。
感谢您的时间,
最好
安迪
答案 0 :(得分:3)
您可以
df['Product Type']=df['Product Type'].str.split().str[1]
newdf=df.set_index(['Unit ID','Product Type']).unstack().sort_index(level=1,axis=1)
newdf.columns=newdf.columns.map(' '.join)
newdf=newdf.reset_index()
newdf
Out[814]:
Unit ID Individual Value ABCD Final Disposition ABCD \
0 ZZZ-997 50.0 Returned
1 ZZZ-998 200.0 Order Closed
2 ZZZ-999 100.0 Order Closed
Individual Value EFGH Final Disposition EFGH
0 50.0 Returned
1 NaN None
2 200.0 Returned
获取newdf后,只需像newdf.merge(main)
那样合并即可产生结果