Python | Pandas数据帧:高级切片/GroupBy

Python | Pandas数据帧:高级切片/GroupBy,python,pandas,dataframe,object-slicing,Python,Pandas,Dataframe,Object Slicing,我一直在努力寻找熊猫已经有一段时间了,也许有人可以为这个问题提供一些新的线索:) 考虑取消以下数据帧,df: Year Month Task TaskID TaskClass TaskClassID SomeValue 2019 11 A 1 X 10 6.58 2019 11 A 1 Y 20 1.58 2019 11 B 2 X 10

我一直在努力寻找熊猫已经有一段时间了,也许有人可以为这个问题提供一些新的线索:)

考虑取消以下数据帧,df

Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      X         10          6.58
2019 11    A    1      Y         20          1.58
2019 11    B    2      X         10          6.58
2019 11    B    2      Y         20          1.58
目标:按任务分组,每个任务都有一个唯一的任务类观察(哪些任务有一个任务类对于这个问题并不重要,可以认为是随机的)。 像这样:

Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      X         10          6.58
2019 11    B    2      Y         20          1.58
Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      X         10          6.58
2019 11    A    1      Y         20          1.58
2019 11    A    1      Z         30          1.00
2019 11    A    1      W         40          0.25
2019 11    B    2      X         10          6.58
2019 11    B    2      Y         20          1.58
2019 11    B    2      Z         30          1.00
2019 11    B    2      W         40          0.25
或者,例如:

Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      Y         20          1.58
2019 11    B    2      X         10          6.58
其他约束最后一个问题将有数千个任务,更重要的是,每个任务可以有更多的TaskClass,如下所示:

Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      X         10          6.58
2019 11    B    2      Y         20          1.58
Year Month Task TaskID TaskClass TaskClassID SomeValue
2019 11    A    1      X         10          6.58
2019 11    A    1      Y         20          1.58
2019 11    A    1      Z         30          1.00
2019 11    A    1      W         40          0.25
2019 11    B    2      X         10          6.58
2019 11    B    2      Y         20          1.58
2019 11    B    2      Z         30          1.00
2019 11    B    2      W         40          0.25

提前谢谢大家。

为什么不使用拖放副本

详情如下:

假设数据帧如下所示:

 data = pd.DataFrame({
        'Task Class': ['x', 'x', 'y', 'z', 'y', 'z'],
        'Value' : [1, 2, 3, 4, 5, 6],
    })

  Task Class  Value
0          x      1
1          x      2
2          y      3
3          z      4
4          y      5
5          z      6
我们可以做到:

data.drop_duplicates(['Task Class'], inplace=True)
并获得:

  Task Class  Value
0          x      1
2          y      3
3          z      4