INDEX和MATCH在Pandas Python中具有多个条件



我试图在2个数据集做一个索引匹配,但有麻烦。下面是我正在尝试做的一个例子。我想填入"&;&;&;&;&;&;在df中为空的df2数据,其中&;machine &;; &; year &;和&;Order type &;

我们将第一个数据帧命名为"df">

Machine Year    Cost    a   b   c   
0   abc     2014    5500    nan nan nan                                     
1   abc     2015    89      nan nan nan                                 
2   abc     2016    600     nan nan nan                                 
3   abc     2017    250     nan nan nan                                 
4   abc     2018    2100    nan nan nan                                         
5   abc     2019    590     nan nan nan                                         
6   dcb     2020    3000    nan nan nan                                         
7   dcb     2021    100     nan nan nan                                     

第二个数据集称为"df2">

Order Type  Machine Year    Total Count
0   a           abc      2014   1
1   b           abc      2014   1
2   c           abc      2014   2
4   c           dcb      2015   4
3   a           abc      2016   3

最终输出为:

Machine Year    Cost    a   b   c   
0   abc     2014    5500    1   1   2                                       
1   abc     2015    89      nan nan nan                                 
2   abc     2016    600     3 nan nan                                   
3   abc     2017    250     nan nan nan                                 
4   abc     2018    2100    nan nan nan                                         
5   abc     2019    590     1   nan nan                                         
6   dcb     2014    3000    nan nan 4                                           
7   dcb     2015    100     nan nan nan     

谢谢你的帮助

考虑DataFrame.pivot使df2df1融合

final_df = (
df1.reindex(["Machine", "Type", "Cost"], axis=True)
.merge(
df.pivot(
index=["Machine", "Year"], 
columns="Order Type", 
values="Total Count"
).reset_index(),
on = ["Machine", "Year"]
)
)

最新更新