Создать кросс-таблицу в python pandas, показывая, какие значения присутствуют - PullRequest
2 голосов
/ 01 мая 2020

с учетом следующих данных:

pd.DataFrame(dict(
    name = ['a', 'a', 'a', 'b', 'b', 'b'],
    vals = [1, 2 , 3, 99, 3, 4]
))

, который выглядит так:

  name  vals
0    a     1
1    a     2
2    a     3
3    b    99
4    b     3
5    b     4

Мне интересно, как создать следующее:

     1     2    3      4     99
a  true  true  true  false  false
b  false false true  false  true

Примечание - наличие точных значений true и false в приведенном выше примере не так важно, я не знаю, как go создать таблицу такого типа на данный момент.

Ответы [ 2 ]

5 голосов
/ 01 мая 2020

IIU C crosstab

s=pd.crosstab(df.name,df.vals).astype(bool)
Out[38]: 
vals     1      2     3      4      99
name                                  
a      True   True  True  False  False
b     False  False  True   True   True
2 голосов
/ 01 мая 2020

Может также get_dummies и затем агрегировать по names

pd.get_dummies(df.set_index('name').vals).any(level=0) 
                                        #.max(level=0) for 1/0 dummies
                                        #.sum(level=0) for counts
...