如何解决熊猫如何根据条件划分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 举报,一经查实,本站将立刻删除。