【问题标题】:merging pandas dataframe on multyindex columns在多索引列上合并熊猫数据框
【发布时间】:2018-03-05 14:17:12
【问题描述】:

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

新的数据框如下所示:

                              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

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

我希望合并后的数据框为每个检查员提供他对抱怨==0 和抱怨==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

【问题讨论】:

标签: python pandas merge


【解决方案1】:

您可以使用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

【讨论】:

  • 谢谢!我在一分钟前自己解决了它,但我会寻找你的答案,因为我以前从未使用过 unstack
【解决方案2】:

好的,我找到了答案。不确定它是否是最好的方法,但它有效。 首先,我获取新数据框并将其拆分为两个数据框,一个具有合规性==0,另一个具有合规性==1。然后我将每个数据帧的索引转换为列表并将其保存在参数中。现在我将我的基本数据框与我创建的两个新数据框合并。合并函数中的“right_on”参数现在等于为两个数据帧保存在侧面的列表的名称。它有效:) 希望这可以帮助某人。

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 2018-02-02
    • 2021-03-25
    • 2020-10-31
    • 1970-01-01
    • 2016-08-01
    • 2019-12-02
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多