微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫如何根据条件划分groupby中的行列

如何解决熊猫如何根据条件划分groupby中的行列

我有数据框

C1    c10 val val_type
1      3   5   target
1      3   8   end
1      3   9   other
2      8   1   end
2      8   2   target
2      8   9   other

C1、C10 的值创建 3 组。 在这些组中,我想创建一个新的目标/结束列。 所以输出将是:

C1    c10 val val_type   new 
1      3   5   target    0.652
1      3   8   end       0.652
1      3   9   other     0.652
2      8   12  end       0.166
2      8   2   target    0.166
2      8   9   other     0.166

最好的方法是什么?

编辑:忽略其他

解决方法

你可以pivot

s = df.pivot("C1","val_type","val")
df["new"] = df["C1"].map(s["target"]/s["end"])
print (df)

   C1  c10  val val_type       new
0   1    3    5   target  0.625000
1   1    3    8      end  0.625000
2   1    5    9    other  0.625000
3   2    8   12      end  0.166667
4   2    8    2   target  0.166667
5   2    8    9    other  0.166667
,

我们可以pivot重塑数据框,然后使用eval计算target / end,然后merge给定的df以及{{1}上的评估列}

C1,c10

c = ['C1','c10']
df.merge(df.pivot(c,'val_type','val').eval('target/end').rename('new'),on=c)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。