计算基于另一列的一列中的元素-Python

时间:2019-12-19 16:04:41

标签: python python-3.x pandas

我想知道一列中的哪个元素基于不同列中的3个组而具有相同的出现次数。

以下是df的外观: enter image description here 这是确切的问题: 多少项运动分配了完全相同数量的金牌,银牌和铜牌?

1 个答案:

答案 0 :(得分:0)

您需要做的核心是旋转表并使用count进行汇总。

>>> df = pd.DataFrame(
    data=[['Aquatics', 'Swimming', 'Gold'],
          ['Aquatics', 'Swimming', 'Silver'],
          ['Aquatics', 'Swimming', 'Silver'],
          ['Aquatics', 'Rowing', 'Gold'],
          ['Aquatics', 'Rowing', 'Bronze']],
     columns=['Sport', 'Discipline', 'Medal']
)

>>> df[['Discipline', 'Medal']]\
        .pivot_table(index='Discipline', columns='Medal', aggfunc=len)\
        .reset_index()\
        .fillna(value=0)

      Discipline  Bronze  Gold  Silver
0         Rowing     1.0   1.0     0.0
1       Swimming     0.0   1.0     2.0

从这里开始,您可以分组或以其他方式分组具有相同奖牌数的运动。或者,如果您要跟踪在运动中分配了相同数量的每枚奖牌的运动,请使用

df[(df['Gold'] == df['Silver']) & (df['Silver'] == df['Bronze'])]