методы подсчета ярлыков в панде с несколькими столбцами - PullRequest
0 голосов
/ 18 ноября 2018

это мой фрейм данных

    year2000_bin    year2001_bin    year2002_bin    Firm
0   binZ            binZ            binZ            0
1   binZ            binZ            binZ            1
2   binZ            binZ            binZ            2
3   binZ            binZ            binZ            3
4   binZ            binZ            binZ            4
5   binZ            binZ            binZ            5
6   binW            binV            binV            6
7   binZ            binZ            binZ            7
8   binZ            binZ            binZ            8
9   binZ            binZ            binZ            9

Я пытаюсь найти общее количество фирм, принадлежащих каждому бину (например, binZ, binW и т. Д.)

следующий синтаксис дает мне два года

dict1={k:list(v) for k, v in rebinnedDF.groupby('year2000_bin')['Firm'] }       
dict2={k:list(v) for k, v in rebinnedDF.groupby('year2001_bin')['Firm'] }

year1= [(k, len(v1)) for k, v1 in dict1.items()]
year2= [(k, len(v2)) for k, v2 in dict2.items()] 
for i in year1:
    #print(i[0])
    for j in year2:
        if i[0]==j[0]:
            print(j[0], i[1], j[1])

Я могу получить результат

(binZ, 9, 9)
(binW, 1, 0)
(binV, 0, 1)

мой ожидаемый результат:

(binZ, 9, 9, 9)
(binW, 1, 0, 0)
(binV, 0, 1, 1)

Это означает, что у меня есть заголовки столбцов year2000_bin, year2001_bin, year2002_bin - year2018_bin, всего 19 лет. Как мне посчитать, что несколько столбцов для этого выбранного значения строки. Ищете эффективный путь от гуру панды.

1 Ответ

0 голосов
/ 18 ноября 2018

IIUC

df.melt('Firm').groupby(['value','variable']).size().unstack(fill_value=0)
Out[51]: 
variable  year2000_bin  year2001_bin  year2002_bin
value                                             
binV                 0             1             1
binW                 1             0             0
binZ                 9             9             9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...