Поиск количества уникальных значений в столбце для каждого уникального значения в другом столбце - PullRequest
0 голосов
/ 04 марта 2019

У меня есть фрейм данных с четырьмя столбцами, дорожка, список воспроизведения num_tracks, кластер.Моя цель - создать новый фрейм данных, который будет выводить строку, содержащую трек, pid и столбцы для каждого уникального значения в кластере с соответствующим счетчиком.

Вот примерный фрейм данных:

pid          track          cluster          num_track
0            1              6                4
0            2              1                4
0            3              6                4
0            4              3                4
1            5              10               3
1            6              10               3
1            7              1                4
2            8              9                5
2            9              11               5
2            10             2                5
2            11             2                5
2            12             2                5

Итак, мой желаемый результат будет:

pid track cluster num_track c1 c2 c3 c4 c5 c6 c7 ... c12
0   1     6       4         1  0  1  0  0  2  0      0
0   2     1       4         1  0  1  0  0  2  0      0
0   3     6       4         1  0  1  0  0  2  0      0
0   4     3       4         1  0  1  0  0  2  0      0
1   5     10      3         1  0  0  0  0  0  0      0
1   6     10      3         1  0  0  0  0  0  0      0
1   7     1       3         1  0  0  0  0  0  0      0
2   8     9       5         0  3  0  0  0  0  0      0
2   9     11      5         0  3  0  0  0  0  0      0
2   10    2       5         0  3  0  0  0  0  0      0
2   11    2       5         0  3  0  0  0  0  0      0
2   12    2       5         0  3  0  0  0  0  0      0

Я надеюсь, что я правильно задал свой вопрос, если что-то не так, скажите мне!У меня еще недостаточно представителей, чтобы настроить награду, но я могу сделать репост, когда мне будет достаточно.Любая помощь будет оценена !!

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете использовать crosstab с reindex, затем concat вернуться к исходному df

s=pd.crosstab(df.pid,df.cluster).reindex(df.pid)
s.index=df.index
df=pd.concat([df,s.add_prefix('c')],1)
df
Out[209]: 
    pid  track  cluster  num_track  c1  c2  c3  c6  c9  c10  c11
0     0      1        6          4   1   0   1   2   0    0    0
1     0      2        1          4   1   0   1   2   0    0    0
2     0      3        6          4   1   0   1   2   0    0    0
3     0      4        3          4   1   0   1   2   0    0    0
4     1      5       10          3   1   0   0   0   0    2    0
5     1      6       10          3   1   0   0   0   0    2    0
6     1      7        1          4   1   0   0   0   0    2    0
7     2      8        9          5   0   3   0   0   1    0    1
8     2      9       11          5   0   3   0   0   1    0    1
9     2     10        2          5   0   3   0   0   1    0    1
10    2     11        2          5   0   3   0   0   1    0    1
11    2     12        2          5   0   3   0   0   1    0    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...