Python | Pandas DataFrame: расширенная нарезка / GroupBy - PullRequest
0 голосов
/ 19 февраля 2020

Я некоторое время боролся с квестом pandas, и, возможно, кто-то может пролить новый свет на эту проблему:)

Подумайте о том, чтобы следовать pandas фрейму данных, 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

цель: группировка по Задача таким образом, что каждая Задача получает уникальный TaskClass наблюдение (которое Tasks получает 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      Y         20          1.58
2019 11    B    2      X         10          6.58

другие ограничения конечная проблема будет иметь тысячи задач и, что более важно, может иметь больше TaskClass за Task , что-то вроде этого:

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

Заранее всем спасибо.

1 Ответ

0 голосов
/ 19 февраля 2020

Почему бы не использовать дубликаты отбрасывания?

Подробнее здесь: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

Допустим, что фрейм данных выглядит так:

 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
...