Панды: создавайте иерархии внутри данных, а затем используйте иерархии для вычислений - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу попросить вас помочь Python. У меня есть данные, как здесь на картинке:

enter image description here

Я хочу создать иерархию отношений формы цвета, когда знаю, что:

цвет определяет первый уровень иерархии сформировать второй уровень = слой определения следующим образом:

если у меня есть цвет "синий" + "круговой" = я знаю, что синий - это иерархия 1, а круговой - это также 1-й уровень иерархии в фигуре. когда у меня "синий" + "треугольный" = я знаю, что синий равен 1, а треугольный 2. Когда у меня "красный" + "круговой" = красный - это иерархия 2, круговой 1 => красный выше синего независимо от формы.

Чего я хочу достичь: я хочу установить базовую комбинацию, с которой я буду сравнивать другие комбинации иерархии. Это означает, что я буду устанавливать «синий круг» в качестве основы. А потом сравню базу с "синим треугольным", потом с "красным круглым" и т. Д. В сравнении я хочу добавить определенную информацию в новый столбец об иерархии, в которой находится комбинация:

blue circular = 1.1 
blue triangular = 1.2
...

Мое видение состоит в том, чтобы собрать все уникальные комбинации из панд данных, как я здесь:

shape= df['shape']
color = df['color']
combinations = set(list(zip(color,shape)))    

Затем я хочу пройти по этим комбинациям, чтобы создать новый фрейм данных, где я проведу некоторое сравнение между комбинациями с более низкой иерархией и комбинациями с более высокой иерархией.

for a,b in enumerate(set(list(zip(color,shape)))):
     df_new = df[(df['color'] == a) & (df['shape'] == b)]

Но сейчас я действительно застрял и не знаю, как продолжить. Я думал о создании словаря, в котором я буду хранить иерархии вроде:

colors = {'blue': 1, 'red': 2, 'pink': 3}
shapes = {'circular': 1, 'triangular': 2}

И тогда я бы как-то это сочетал. Но я действительно не знаю вариантов.

Может быть также, что не должно быть никакой комбинации, над которой я хочу выполнить какое-либо действие. например, розовая треугольная = ее не нужно отмечать, поскольку это совершенно другая категория, и я хочу оставить ее вне иерархических структур.

...