合并多索引列上的数据帧

2024-05-19 19:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在我的数据帧上应用一个函数,添加关于我拥有的每个id的平均性能的信息。问题是使用apply应用这个函数需要很多时间(我在20分钟后停止了这个过程),我需要重复几次。所以我想尝试把这些信息放到一个新的数据框中,然后把它们合并在一起。问题是我的新数据帧有multyindex,我正试图在这个索引上合并。好像找不到办法。有什么建议吗

新数据框如下所示:

                              compliance_detail
    inspector_name  compliance  
    Addison, Michael    0.0 0.431203
                        1.0 0.034050
    Ahmad, Muna I       0.0 0.731405
                        1.0 0.052342
    Anderson, Trevis    0.0 0.166667

我想合并检查器的名称和合规性,因为我的原始数据框中有这两个

我希望合并后的数据帧对每个检查器都有其complicince==0和complicince==1的评级。因此它看起来像这样:

    ticket_id   inspector_name  positive_complaince negetive_complaince
    0   22056   Addison, Michael 0.034050            0.431203
    1   22057   Ahmad, Muna I    0.052342            0.731405

Tags: 数据函数name信息idinspector性能apply
2条回答

可以使用unstack重塑数据帧。另外,基于给定的输出,我假设您希望删除inspector_name,其中一个符合性(正或负)不可用

## sample data
df = pd.DataFrame({'inspector_name':['Addison, Michael','Addison, Michael','Ahmad, Muna I','Ahmad, Muna I','Anderson, Trevis'],
                   'compliance': [0.0,1.0,0.0,1.0,0.0],
                   'compliance_detail':[0.4312, 0.0340, 0.7314,0.052,0.1666]})

df = df.set_index(['inspector_name','compliance'])

## solution

df = df.unstack().dropna().reset_index()
df.columns = ['inspector_name','negative_complaince','positive_complaince']
df

    inspector_name  negative_complaince     positive_complaince
0   Addison, Michael       0.4312                  0.034
1   Ahmad, Muna I          0.7314                  0.052

好吧,我找到答案了。不知道这是不是最好的方法,但它是有效的。 首先,我获取新的数据帧并将其拆分为两个数据帧,一个符合性==0,另一个符合性==1。然后获取每个数据帧的索引,将其转换为一个列表并将其保存在一个参数中。现在,我将基本数据帧与我创建的两个新数据帧合并。合并函数中的“right\u on”参数现在等于为这两个数据帧保存的列表的名称。而且很有效:) 希望这能帮上忙

相关问题 更多 >