Думаю, вам это нужно.
Ввод:
df
ISO3 Income_Cat_1980 Income_Cat_1985 DWWC1980 DWWC1985
0 AFG L LM 5 10
1 AGO LM H 15 25
2 ALB LM UM 30 40
3 ARE H H 40 50
Используйте следующий код
pd.concat([df.groupby('Income_Cat_' + str(year)).sum()['DWWC' + str(year)]
for year in range(1980,1986) if 'Income_Cat_' + str(year) in
df.columns],1).fillna(0).astype(int)
Вывод
DWWC1980 DWWC1985
H 40 75
L 5 0
LM 45 10
UM 0 40
Объяснение:
pd.concat([list of series],1)
объединяет pd.Series
вдоль индексов.Если один pd.Series
(с именем столбца series1
не имеет индекса i
другого, ячейка в результирующем кадре данных получает значение NaN
, поэтому:
print(df.loc[i, series1])
приводит к NaN
Поэтому мы используем fillna(0)
, чтобы заполнить NaN
s нулями. Приведение к целым числам - это последний шаг к достижению желаемого кадра данных