计算带条件的多索引系列/数据框

韦斯卡

我有一个多索引Sries,我想对其进行计算。我对多索引数据帧不熟悉,因此将不胜感激。

d = {'c1':['a', 'a', 'b', 'b', 'c', 'c', 'c', 'd'], 'c2':['False', 'True', 'True', 'True', 'True', 'True', 'False', 'False']}
dd = pd.DataFrame(data=d)
dd.groupby('c1')['c2'].value_counts(normalize=True)
c1  c2   
a   False    0.500000
    True     0.500000
b   True     1.000000
c   True     0.666667
    False    0.333333
d   False    1.000000

我想Truec2列中的最大数除以True对于上面的示例,它将是1 / 0.5000001 / 0.666667

预期产量

在此处输入图片说明

何塞·梅代罗斯

基本上,您要做的就是.xs对您的价值计数使用该方法。

拿:

series = dd.groupby('c1')['c2'].value_counts(normalize=True)

为了获得数量True由s c1,你可以做

true_counts = series.xs('True', level=1)

返回如下内容:

c1
a    0.500000
b    1.000000
c    0.666667
Name: c2, dtype: float64

现在,您可以对单个索引系列执行所有操作。首先采用max_indexand max_value,在这种情况下(因为已将其标准化),可以通过true_counts.loc[true_counts == 1]然后检索值和索引来实现,或者:

max_index = true_counts.index[true_counts.argmax()]
max_val = true_counts[max_index]

然后,对剩余的行进行计算:

true_counts_dropped = true_counts.drop(max_index)
ans = max_val / true_counts_dropped

为了使指数的样子b/ab/c你可以这样做:

ans.index = [max_index + '/' + idx for idx in ans.index]

最终结果:

>>> ans
b/a    2.0
b/c    1.5
Name: c2, dtype: float64

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算带条件的多索引系列/数据框

来自分类Dev

Python熊猫-数据框的多索引系列

来自分类Dev

如何计算熊猫中重新采样的多索引数据框

来自分类Dev

熊猫多索引数据框中的组之间的计算

来自分类Dev

如何计算熊猫中重新采样的多索引数据框

来自分类Dev

多索引+数据的条件

来自分类Dev

将条件放入熊猫数据框(多索引)?

来自分类Dev

使用系列的索引索引 Pandas 数据框

来自分类Dev

在多索引数据框中合并两个数据系列

来自分类Dev

截断多索引数据框

来自分类Dev

除以多索引数据框

来自分类Dev

重新索引多索引熊猫数据框

来自分类Dev

多索引数据框中的熊猫索引

来自分类Dev

从多索引熊猫数据框创建索引

来自分类Dev

多索引数据框的布尔索引

来自分类Dev

从多索引数据框中提取数据子集并计算列的差异

来自分类Dev

数据框以计算条件发生

来自分类Dev

带数据框的条件语句/ If语句

来自分类Dev

带条件的累积总和熊猫数据框

来自分类Dev

熊猫:根据条件为多索引数据框的子集设置值的正确方法

来自分类Dev

从多索引数据框中删除列

来自分类Dev

Python Pandas:转换多索引数据框

来自分类Dev

从Excel导入多索引数据框

来自分类Dev

在多索引数据框中插入列

来自分类Dev

重命名多索引数据框熊猫

来自分类Dev

如何重组多索引数据框

来自分类Dev

合并多索引熊猫数据框

来自分类Dev

如何规范熊猫多索引数据框?

来自分类Dev

在熊猫中融化多索引数据框