Панды: Могу ли я группировать по записям одного столбца и суммировать его элементы на основе записей другого столбца - PullRequest
0 голосов
/ 16 марта 2019

У меня есть следующий Dataframe

index =[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
dct =  {'Unique household identifier': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 2, 7: 2, 8: 2, 9: 2}, 'Relationship to head [Standardized version]': {0: 'Head', 1: 'Spou', 2: 'Son/', 3: 'Son/', 4: 'Son/', 5: 'Son/', 6: 'Head', 7: 'Spou', 8: 'Son/', 9: 'Son/'}}
R = pd.DataFrame( dct, index=index )

enter image description here

Я хотел бы преобразовать этот DataFrame (при условии, что в нем много других столбцов).Я пытаюсь, чтобы это выглядело как

enter image description here

Я пытался кодировать это с помощью цикла for и сводной таблицы, используя следующий код, но не сработал.

Первый:

R.pivot(index='Unique household identifier', columns='Relationship to head [Standardized version]', values='Relationship to head [Standardized version]')

Второй:

B=[]
for i in range(1,len(R.columns)+1):
    A=R[(R['Unique household identifier']==i)*(R['Relationship to head [Standardized version]']!='Head')]['Relationship to head [Standardized version]'].value_counts()
    B.append(pd.DataFrame(data=[A.values],columns=A.index))

1 Ответ

1 голос
/ 16 марта 2019

Одно решение может быть pd.crosstab:

 res = pd.crosstab(index=R['Unique household identifier'], 
                   columns=R['Relationship to head [Standardized version]'])
 res.drop('Head', axis=1)

Relationship to head [Standardized version]  Son/  Spou
Unique household identifier                            
1                                               4     1
2                                               2     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...